2016-09-10 21 views
-3

私は制御フローを学習し、5つの異なる数値を取得し、配列を格納し、ソートして印刷するコードを作成しようとしています。私は[4]配列に5つのオブジェクトを格納しているので、私は例外が配列の範囲外ですが、私は理由を見ることができません。制御フローC#(境界外例外)

なぜこの例外が発生するのですか?

public static void Three() 
    { 
     var numbers = new int[4]; 
     var i = 0; 
     while (i <= 4) 
     { 
      Console.WriteLine("enter a number: "); 
      var input = Convert.ToInt32(Console.ReadLine()); 
      if (Array.IndexOf(numbers, input) != -1) 
      { 
       Console.WriteLine("try again"); 
      } 
      else 
      { 
       numbers[i] = input; 
       i++; 
      } 
     } 
     Array.Sort(numbers); 
     foreach (var item in numbers) 
     { 
      Console.WriteLine(Convert.ToString(item)); 
     } 
    } 
+0

「5つのオブジェクトを配列に」 - あなたは質問のその部分を再読み込みすることができます。言語+例外名(例:https://www.bing.com/)を検索することをお勧めします。検索?q = C%23%20IndexOutOfRangeException)は質問をする前の最初の良いステップです*。 –

答えて

1

私は、IM [4]配列に5つのオブジェクトを格納するため、なぜ見ることができません。

[4]アレイ4つのインデックス0でオブジェクト、12、及び3を保持するため。 5つのオブジェクトを保持する場合は、int[5]が必要で、インデックス0-4を使用します。これはあなたが通常持っているのと同じようにi < 4を表示し、i <= 4を表示しない理由です。

+0

ありがとうございます。 0のインデックスコンセプトについてちょっと混乱しましたが、[4]がそれのために正しいと思っていました。 – niceguy335

関連する問題