2012-02-20 88 views
3

我試圖用C#在數組中存儲十個值。如果我只使用單位數字,一切都會順利進行。但是,每次給兩位或更多位數字時,我都會遇到錯誤,指出它超出了數組索引的範圍。我懷疑它是單獨存儲每個數字,例如,如果10是我輸入的第一個數字,它會在第一個位置存儲1,在第二個位置存儲0。但是,我不確定。這是問題還是其他問題?我怎樣才能解決這個問題?如何找到「超出範圍」異常的原因?

(使用Microsoft 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

該代碼適用於我。循環之後還會發生什麼其他代碼? – 2012-02-20 02:06:46

+5

第21行的代碼行是什麼? – 2012-02-20 02:10:40

+1

只需在調試器中運行(也許在菜單Debug中啓用 - 例外CLR異常)並查看VS2010停止的行。 – Oliver 2012-12-18 15:35:10

回答

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。

該行可能還有另一種用法,但該行中的索引值超出了數組範圍(小於0或大於9)。找出原因並修復。

希望有所幫助。

相關問題