2012-02-09 7 views
0

私は、次のように書式設定されたテキストファイルを開き、各オブジェクト(および各行ではない)が独自のインデックスを持つ2d 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 

Iは、一方を含むものの大部分(scanner.hasNext())または多くの解決策を試みているが(scanner.hasNextLine())、ループで独自indiceに行のすべてのオブジェクトを割り当てます1d arraylistを作成し、そのarraylistを2d arraylistに追加します。しかし、私が何をしても、私は望む結果を得られません。

私が本質的にしようとしているのは、行の中の次のオブジェクトだけをつかみ、次の行にジャンプしないscanner .hasNext()メソッドのようなものです。私の試行の1つの例は次の通りです:

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

は、atimeので、ファイル1行を読み取るためにBufferedReaderのを使用してください。

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?

関連する問題