2016-11-07 3 views
-4

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

int column = 0; 
int arraySize = 0; 
String fileName = "SuperBowlWinners.txt"; 
File file = new File(fileName); 
Scanner inputFile = new Scanner(file); 

while (inputFile.hasNext()) { 
    inputFile.nextLine(); 
    arraySize++; 
} 
String[][] superBowl = new String[arraySize][1]; 
while (inputFile.hasNext()) { 
    for (int index = 0; index < superBowl.length; index++) { 
     superBowl[index][0] = inputFiles.next(); 
     superBowl[index][1] = inputFiles.nextLine(); 
    } 
} 

Первое время цикл используется для определения размера массива и нужны два столбца, так вот почему 1 во втором []. Не создается ли экземпляр между файлом? Как разрешить чтение данных из массива из файла?

+2

"Мне нужно две колонки". Затем инициализируйте массив таким образом: 'String [] [] superBowl = new String [arraySize] [2];' – bradimus

+1

Если вы сделаете размер '[1]', он может иметь только один элемент, то есть '[0]' Я предлагаю вы посмотрите на массив в своем отладчике, чтобы подтвердить это. –

+0

Возможно, это помогает http://stackoverflow.com/q/23042295/1741542 –

ответ

1
String[][] superBowl = new String[arraySize][1]; 
while (inputFile.hasNext()) { 
    for (int index = 0; index < superBowl.length; index++) { 
     superBowl[index][0] = inputFiles.next(); 
     superBowl[index][1] = inputFiles.nextLine(); 
    } 
} 

Ну ... вышеуказанный код необходимо обновить.

String[][] superBowl = new String[arraySize][2]; 
file = new File(fileName); 
inputFile = new Scanner(file); 
while (inputFile.hasNext()) { 
    for (int index = 0; index < superBowl.length; index++) { 
     superBowl[index][0] = inputFiles.next(); 
     superBowl[index][1] = inputFiles.nextLine(); 
    } 
} 

Это потому, что:

  1. Вы хотите иметь две колонки,
  2. Вы читали в начале до конца файла, так что вам нужно, чтобы начать читать с начала.
1

Если вы используете Java 8 вы можете использовать потоки:

Files.lines(Paths.get(fileName)).toArray(String[]::new); 
Смежные вопросы