2017-01-17 1 views
1

何らかの理由で、私がこのプログラムでベストを出力したときに、ints番号がどんな値であるべきかが爆発します。実数が何であるかを理解することは難しいです!値が歪められています

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace Safr_Manager 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 



      var sortarry = new[] {'4', '6', '4', '7', '8', '3'}; 

      int best = -1; 




      for(int i = 0; i < 6; i++) 
      { 
       var cursel = sortarry[i]; 
       if (cursel > best) 
       { 

        best = cursel; 

       } 



       Console.WriteLine(cursel); 
       Console.WriteLine(best); 



      } 



     } 

    } 
} 

これが出力します。あなたはそれが現在の最高の部分にあるべきであるものを変える方法を見ることができます!

Current selected: 4 
Current best: 52 
Current selected: 6 
Current best: 54 
Current selected: 4 
Current best: 54 
Current selected: 7 
Current best: 55 
Current selected: 8 
Current best: 56 
Current selected: 3 
Current best: 56 
+1

52は、charの値を意味し、 '4'、配列 –

+1

または 'Console.WriteLineを(Char.GetNumericValue(最良).ToString())から、単一引用符を削除し、' – Slai

答えて

9

たとえば、数字の前後に引用符を使用します。 '4'はC#にcharだと伝えます。暗黙的にintに変換すると、そのchar(例えば52)のASCIIコードが使用されます。 intを使用するには、配列を次のように設定します。

var sortarry = new[] {4, 6, 4, 7, 8, 3}; 
+0

感謝君は!それは今働く! –

1

intをcharと比較しています。値を比較したい場合は、良い考えではありません。 配列をintに変更してください。

using System; 

public class Program 
{ 
    public static void Main() 
    { 
     var sortarry = new[] {4, 6, 4, 7, 8, 3}; 

      int best = -1; 
      for(int i = 0; i < 6; i++) 
      { 
       var cursel = sortarry[i]; 
       if (cursel > best) 
       { 

        best = cursel; 

       } 
       Console.WriteLine(cursel); 
       Console.WriteLine(best); 
      } 

    } 
} 

コードの例:https://dotnetfiddle.net/hjlYjU

+0

また、サイクルに6を指定する必要はありません。 'sortarry.Length'を使うだけです – xszaboj

関連する問題