Добавление линий различной длины в 2-й массив - PullRequest
0 голосов
/ 10 февраля 2012

Я хочу открыть текстовый файл в следующем формате и поместить его в двумерный массив, где каждый объект (а не каждая строка) имеет свой собственный индекс.

5
1 a w e r s 5 2 d 6
f s d e a 3 6 7 1 32
2 f s 6 d
4 s h y 99 3 s d
7 s x d q s 

Я испробовал множество решений, большинство из которых включали циклы while (scanner.hasNext ()) или while (scanner.hasNextLine ()), присваивая всем объектам строки их собственный индекс в 1d-массиве затем добавление этого arraylist к 2d arraylist. Но независимо от того, что я делаю, я не получаю желаемого результата.

По сути, я пытаюсь сделать что-то, например метод .hasNext () сканера, который захватывает только следующий объект в строке и не переходит на следующую строку. Пример одной из моих попыток выглядит следующим образом:

while (scanner.hasNextLine()) {
   ArrayList<Object> array = new ArrayList<Object>();
     while(scanner.hasNext()0 {    

         String line = scanner.next();
         array.add(line);
        }

        System.out.println(array);
        2dArray.add(array);
    }

    scanner.nextLine();
}

Ответы [ 2 ]

0 голосов
/ 10 февраля 2012

Используйте BufferedReader для чтения файла по одной строке за раз.

BufferedReader br = new BufferedReader(...);
while ((strLine = br.readLine()) != null) {
   String[] strArray = strLine.split("\\s");
   // do stuff with array
}

Затем разделите строку на пробелы, что дает вам строку [] и легко конвертируется в список.Примерно так: Как разделить строку с пробелами в качестве разделителей?

0 голосов
/ 10 февраля 2012

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

while (scanner.hasNextLine()) {
    String line = scanner.nextLine();
    Scanner lineScanner = new Scanner(line);
    ArrayList<String> array = new ArrayList<String>();
    while (lineScanner.hasNext()) {
        array.add(lineScanner.next());
    }
    my2Darray.add(array);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...