2012-02-20 8 views
3

私はC#で配列に10個の値を格納しようとしています。一桁の数字だけを使用すると、すべてがスムーズに進みます。しかし、2桁以上の数字を与えるたびに、配列インデックスの範囲外であるというエラーが出ます。私はそれが別々に各桁を格納していると思われます。たとえば、最初の数字が10であれば、最初の位置に1、2番目に0が格納されます。しかし、私は確信していません。それがここの問題なのですか、それとも何か他のものですか?これをどうすれば解決できますか? (究極のマイクロソフトのVisual Studio 2010を使用して)「範囲外」例外の理由を見つけるにはどうすればよいですか?

コード:

double[] userValues = new double[10]; 

for (int i=0; i < userValues.Length; i++) { 
    Console.Write("Enter a value: "); 
    userValues[i] = Convert.ToDouble(Console.ReadLine()); 
} 

私は取得していますエラーの例:

Enter a value: 10 
Enter a value: 10 
Enter a value: 10 
Enter a value: 10 
Enter a value: 10 
Enter a value: 10 
Enter a value: 10 
Enter a value: 10 
Enter a value: 10 
Enter a value: 10 

Unhandled Exception: System.IndexOutOfRangeException: Index was outside the bounds of the array. 
    at Assignment1.Program.Main(String[] args) in I:\CS2350\Assignment1\Assignment1\Program.cs:line 21 
Press any key to continue . . . 
+2

そのコードは私にとって役に立ちます。ループの後に他のコードがありますか? –

+5

21行目のコード行は何ですか? –

+1

単にデバッガで実行してください(デバッグ - 例外CLR例外メニュー内で有効にしてください)、VS2010が停止している行を見てください。 – Oliver

答えて

0

このコードは何も問題はありませんあなたが言うことをしようとしているならば。ループの状態は正常です。 (int i = 0; i < userValues.Length-1; i++)は9回だけ実行されます。これはあなたがやろうとしていることではありません。私が9を参照すると、条件に合格しないのでループに入りません。したがって、ループはi = 0,1,2,3 ... 8から実行され、繰り返し8で終了するとiを9に増やしますしたがって、ループの条件には合致しません。

1

例外メッセージは、Program.csの21行目でエラーが発生したことを示しています。そのコード行を見つけてそれを確認する必要があります。たとえば、Visual Studioでそのコードファイルを開き、Ctrl-Gを押し、ダイアログボックスに「21」と入力します。

おそらく、その行に別の使用法がありますが、その行のindexの値が配列の範囲外です(0より小さいか9より大きい)。理由を見つけて修正してください。

希望に役立ちます。

関連する問題