2015-07-27 8 views
0
Scanner input = new Scanner(System.in); 
    System.out.println("What dimensions do you need"); 
    int z = input.nextInt(); 
    int y = input.nextInt(); 
    int[][] x = new int[z][y]; 
    for (int i = 0; i <= z; i++) { 
     for (int j = 0; j <= y; j++) { 
      System.out.println("What number do you want in " + i + " , " 
        + j); 
      x[i][j] = input.nextInt(); 

     } 
    } 

После достижения определенного размера программа останавливается. если я введу размеры (1,1), это не позволит мне добавить значения к (1,1); я могу вводить только значения для 0,0 и 0,1. Как я могу это решить?Я не могу ввести значения в массив

+0

Это сообщение об ошибке, когда оно останавливается? Попробуйте найти это (либо на этом сайте, либо в Google в целом). – iamnotmaynard

+0

Также, http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html – iamnotmaynard

+0

В вас для циклов, вы не хотите 'i frenchDolphin

ответ

3

Массивы начинаются с 0. Вам нужно меньше, не меньше, чем равное. Изменение

for (int i = 0; i <= z; i++) { 
    for (int j = 0; j <= y; j++) { 

к

for (int i = 0; i < z; i++) { 
    for (int j = 0; j < y; j++) { 

и размеры 1,1 бы пространство для одного массива длиной 1, содержащего массив длиной 1. Увеличение размера любого размера, чтобы добавить больше, чем одно значение.

0

Это потому, что вы выделили меньше памяти для своего массива.

0

Посмотрите на свой для петель:

for (int i = 0; i <= z; i++) { 
     for (int j = 0; j <= y; j++) { 

Это должно быть

for (int i = 0; i < z; i++) { 
     for (int j = 0; j < y; j++) { 
0

Массивы в большинстве языков программирования имеют 0 индексы, основанные.

Это означает, что int[+ a = new int[2] имеет индекс 0 из двух элементов и 1. Таким образом, a[0] является допустимым индексом, a[1] действует слишком, но a[2] нет. Кроме того, это означает, что, когда вы перебирать массив не нужно использовать <= но < как условие по индексу, так как, например

for (int i = 0; i <= 3; ++i) 

будет итерацию для значений i = 0, 1, 2, 3, но 3 является недействительным индекс в new int[3], поэтому вам нужно сделать for (int i = 0; i < 3; ++i).

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