2013-11-07 5 views
0

что это за ошибка? java.lang.ArrayIndexOutOfBoundsException: -1 ?массив (java.lang.ArrayIndexOutOfBoundsException: -1)

java.lang.ArrayIndexOutOfBoundsException: -1 
    at Game.Game.plantVegetables(Game.java:1160) 
    at Game.__SHELL11.run(__SHELL11.java:8) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:601) 
    at bluej.runtime.ExecServer$3.run(ExecServer.java:725) 

Исключение встречается, по адресу:

Scanner keyIn = new Scanner (System.in); 

    for(int leftToPlant=10; leftToPlant>0; leftToPlant--) 
     if (field[row1][column1].equals("t") || 
      field[row1][column1].equals("c") || 
      field[row1][column1].equals("p") || 
      field[row1][column1].equals("r")) 
+1

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

ответ

1

Вы пытаетесь взять -1'th элемент массива, где он не существует. Отправьте больше кода для более точного ответа.

+0

это точная ошибка ((if (поле [row1] [column1] .equals ("t") || field [row1] [column1] .equals ("c") || field [row1] [column1]. equals ("p") || field [row1] [column1] .equals ("r") ||)) – user2965010

+0

Святое дерьмо. Почему бы вам не сделать этот код более читабельным и добавить его в свой оригинальный пост? –

+0

Я сделал то, что вы просили меня сделать. – user2965010

0

Предполагая, что у вас есть массив в цикле for, вы пытаетесь получить доступ к элементу массива с недопустимым индексом. Проверьте цикл for и убедитесь, что ваш массив содержит 11 элементов. Первый элемент не будет доступен.

Пример кода в JavaScript с массивом из 10 элементов

cars=["BMW","Volvo","Saab","Ford","SD","BMW","Volvo","Saab","Ford","SD"]; 

    for (var i=10;i>0;i--) 
    { 
    document.write(cars[i]); 
    } 

Выход:

 undefined - Element 10 
    SD   - Element 9 
    Ford   - Element 8 
    Saab 
    Volvo 
    BMW 
    SD 
    Ford 
    Saab   - Element 2 
    Volvo   - Element 1 

    Element 0 won't be access because your loop stops at 1. 

Fiddle: http://jsfiddle.net/VFLLN/

+0

да, я сделал это, но все еще не работает !! for (int leftToPlant = 11; leftToPlant> 0; leftToPlant--) – user2965010

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