2016-09-26 2 views
-3

новый C# программист здесь,C# Попытка печати массива дает IndexOutOfRangeAcception Error

Я в настоящее время делает простую программу, чтобы распечатать первые 10 раз таблицы числа. Это мой код:

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

namespace Times_tables_calculator 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      int number; 
      int counter; 
      int timestable; 
      int[] TimeTableList = new int[10]; 
      counter = 0; 
      Console.WriteLine("Enter a number:"); 
      number = int.Parse(Console.ReadLine()); 

      while (counter <= 10) 
      { 
       timestable = (number * counter); 
       TimeTableList[counter] = timestable; 
       counter = (counter + 1);    
      } 

      Console.WriteLine("The times tables for " + number + " are:"); 
      TimeTableList.ToList().ForEach(i => Console.WriteLine(i.ToString())); 
      Console.Read(); 
     } 
    } 
} 

Однако, когда я когда-либо запустить программу в Visual Studio, я получаю ошибку IndexOutOfRangeAcception на линии:

TimeTableList[counter] = timestable; 

Любая помощь будет оценена на том, как я должен исправить это.

Спасибо!

+0

ваш размер стола равен 10, но вы сохраняете до 11. (0-10) из-за условия <= 10. – Keppy

ответ

0

Либо изменить

while (counter <= 9) 

ИЛИ

while (counter < 10) 

Вы пытаетесь получить доступ индекса массива 11. Индекс массива начинается с 0. Таким образом, вы должны минус один из условия или удалить = в состоянии

+0

Оба отличные. Благодарю. : D – Bob

1

Изменить

while (counter <= 10) 

в

while (counter < 10) 

Ваши петли начинается с 0 и заканчивается в 10 индекса, это 11 элементов

+0

Спасибо! Это сработало: D – Bob

+0

Приятно иметь -1 без причины или объяснения – Artiom

0

счетчик должен понизить чем 10 не ниже равных. Начальный отсчет массива равен 0. Затем ваши элементы индексируются от 0 до 9.

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