2012-02-09 2 views
0

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

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 

Я пробовал много решений, большинство из них с участием некоторого времени (scanner.hasNext()) или в то время как (scanner.hasNextLine()) петлей, назначая все объекты в ряде их собственных Indice в 1d arraylist, а затем добавив, что 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(); 
} 
+0

Это не может быть одной из ваших попыток; он не будет компилироваться. ('2dArray' не является юридическим идентификатором Java, во внутренней строке' while' есть опечатка, скобки не совпадают.) –

ответ

0

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

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); 
} 
+0

Спасибо ... это здорово! –

0

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

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

Затем разделите строку на пробелы, которая дает вам строку [] и легко преобразуется в список. Что-то вроде этого: How do I split a string with any whitespace chars as delimiters?

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