2013-12-07 2 views
-1

Я хочу напечатать массив в матричной форме, взяв ввод от пользователя. Я пришел к этому коду, но этот код выдавал исключение ArrayIndexOutOfBound. Я старался, но я не могу прийти к какому-либо заключению, поэтому, пожалуйста, помогите мне.Исключение ArrayIndexOutOfBounds с использованием сканера для чтения элемента массива

Вот код:

System.out.println("Enter the row i.e no. of array in x"); 
Scanner sc = new Scanner(System.in); 
int n = sc.nextInt(); 

System.out.println("Enter the size of array"); 

int y[] = new int[n]; 
for (int i = 1; i < y.length; i++) { 
    y[i] = sc.nextInt(); 
} 
int z[][] = new int[n][]; 
for (int i = 1; i < y.length; i++) { 
    z[i] = new int[y[i]]; 
} 
System.out.println("Enter the elements of array"); 
for (int i = 1; i < z.length; i++) { 
    for (int j = 1; j < z[i].length; j++) { 
     z[i][j] = sc.nextInt(); 
    } 
} 
System.out.println("Matrix is"); 
for (int i = 1; i < z.length; i++) { 
    for (int j = 1; j < z[i].length; j++) { 
     System.out.print(z[i][j]); 
     System.out.print("\t"); 
    } 
    System.out.println(); 
} 
+2

Может быть полезно добавить трассировку стека за исключением, которое вы видите, и указать строку, в которой это происходит. – vptheron

+0

Также, как правило, тест после написания небольших фрагментов кода за раз. Групповое тестирование предпочтительнее, но даже просто быстрый запуск с помощью оператора печати. Таким образом, вы знаете, где ошибка. – Vidya

+1

Какие входные данные вызывают ArrayOutOfBoundsException? – Sionnach733

ответ

1

Это не является действительным.

int y[] = new int[n]; 
for (int i = 1; i < y.length; i++) { 
    y[i] = sc.nextInt(); 
} 

Массивы 0 индексированные:

int y[] = new int[n]; 
for (int i = 0; i < y.length; i++) { 
    y[i] = sc.nextInt(); 
} 

Вы должны изменить все свои итерации.

+2

+1, но это все равно не вызовет исключения, так как индексы находятся в привязке – giorashc

+0

@giorashc true, трудно сказать без трассировки стека. Проблема может возникнуть из-за неправильной инициализации одного из значений X [0]. – vptheron

+1

Возможно, это семантика, но я бы сказал, что это действительно ... но ошибка. Начиная с 1, просто исключается первый элемент. Просто потому, что массивы индексируются 0, это не значит, что вы должны начинать итерацию с самого начала, чтобы использовать их в целом. Конечно, ОП намеревался сделать это в этом случае. – Vidya

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