2013-04-26 3 views
0

У меня ошибка ArrayIndexOutOfBoundsException: 0, так как i равно 0 и не автоматически увеличивается. Как я могу исправить этот код, чтобы он работал так, как ожидалось?Получение «ArrayIndexOutOfBoundsException» при попытке автоматического увеличения данных

Я хочу, чтобы он автоматически увеличивал каждую строку данных, считанных в файле, читаемом с помощью массивов. Независимо от того, где я помещаю i++;, я получаю эту проблему. Если я использую другую переменную: такая же проблема.

import java.io.*; 
import java.util.*; 

public class IdolResults 
{ 
    public static void main(String[] args) throws FileNotFoundException 
    { 

     //construct Scanner 
     //Scanner in = new Scanner(System.in); 
     Scanner in = new Scanner(new File("eleVotes1.txt")); 
     Scanner in2 = new Scanner(new File("eleVotes2.txt")); 

     String[][] array; 
     int[][] array2; 
     String[] nameArray; 
     int[] voteArray; 
     int i = 0; 

     while (in.hasNextLine()) 
     { 
      String name = in.next(); 
      int vote = in.nextInt(); 

      System.out.println(name); 
      System.out.println(vote); 

      //stuffhere: print, save name and vote, etc.. 
      //create an array and save info there 
      array = new String[i][]; 
      array2 = new int[i][]; 

      array[i][0] = name; 
      array2[i][1] = vote; 

      //individually store name and votes 
      nameArray = new String[10]; 
      voteArray = new int[10]; 

      nameArray[i] = name; 
      voteArray[i] = vote; 
      i++; 

     } 
    }//end of main 
}//end of class 

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

Results for 2099 
Idol Name  Votes Received % of Total Votes 
__________________________________________________  
Clarkson   80,000   14.4% 
Seacrest   100,000   18.0% 
Dunkleman   75,000   13.5% 
Cowell    110,000   19.7% 
Abdul    125,000   22.4% 
Jackson    67,000   12.0% 

Total Votes   557,000 

The winner is Abdul! 
+1

'ArrayIndexOutOfBoundsException: 0' происходит, когда массив пуст, не тогда, когда' i' не приращение. – dasblinkenlight

+0

Вы удалили предыдущую версию этого вопроса? – Lion

+0

Да, потому что 3 ответа, которые я получил, были удалены, а также 20 минут, потому что одна и та же ошибка появилась даже с их ответами. Затем он не получил нового ответа на некоторое время ... –

ответ

5

здесь

array = new String[i][]; 
array2 = new int[i][]; 

вы только инстанцирование вашего внешнего массива. вы должны создать экземпляр внутренних массивов слишком

так

array[i] = new string[j]; 
+0

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

+1

На этом этапе лучший способ действий - убедиться, что вы понимаете основы. Пройдите сначала, затем попробуйте запустить. http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html – MarsAtomic

+0

@Sam I Я даже если он использует массив таким образом, он получит IndexOutOfBounds. Посмотрите, как он объявляет массивы. i = 0, когда он объявляет их. – MarsAtomic

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