2012-02-20 2 views
3

Я пытаюсь сохранить десять значений в массиве с C#. Если я использую только цифры с цифрами, все идет гладко. Тем не менее, каждый раз, когда я даю числа с двумя или более цифрами, я получаю сообщение об ошибке из-за границ индекса массива. Я подозреваю, что он хранит каждую цифру отдельно, например, если 10 - это первый номер, который я вводил, он сохранил бы 1 в первой позиции и 0 во втором. Однако я не уверен. Это проблема здесь или это что-то еще? Как я могу это исправить?Как найти причину исключения «вне диапазона»?

(с помощью Microsoft Visual Studio 2010 Ultimate)

код:

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

Просто запустите в отладчике (возможно, включите в меню Debug - Exceptions исключение CLR) и посмотрите на строку, где останавливается VS2010. – Oliver

ответ

0

Там нет ничего плохого с этим кодом , если вы пытаетесь сделать то, что говорите. Условия петли прекрасны. (int i = 0; i < userValues.Length-1; i++) будет работать только 9 раз. Это не то, что вы пытаетесь сделать. Когда i ссылается на 9, он не попадает в цикл, поскольку он не передает условия, поэтому цикл будет работать от i = 0, 1, 2, 3 ... 8 и будет увеличивать i до 9, когда он выйдет на итерации 8 , поэтому не соответствует условиям цикла.

1

Сообщение об исключении сообщает, что ошибка произошла на линии 21 в Program.cs. Вам нужно найти эту строку кода и просмотреть ее. Например, вы можете открыть этот файл кода в Visual Studio, нажать Ctrl-G и ввести 21 в диалоговом окне.

Возможно, существует еще одно использование вашего массива в этой строке, но значение индекса в этой строке находится за пределами границ массива (меньше 0 или более 9). Узнайте, зачем и зачем.

Надеюсь, что это поможет.

Смежные вопросы