2016-10-11 1 views
2

タブ区切りのテキストファイルがありますが、各行には異なる数の列があります。次に例を示します。タブの区切り行をJavaで分割する方法は、すべて列数が異なる場合はどうすればよいですか?

1 :  2 16 17 24 31 34 40 41 45 47 48 
2 :  1 3 4 5 6 7 8 13 18 20 22 28 33 35 37 38 42 44 46 49 
3 :  2 10 12 16 17 19 24 25 29 31 34 40 41 45 

私は別の割り当てのためにここで行ったように、スプリット機能を使用したい:

String[] words = line.split("\t"); 
col1 = Integer.parseInt(words[0]); 
col2 = Integer.parseInt(words[1]); 
col3 = Integer.parseInt(words[2]); 
col4 = Integer.parseInt(words[3]); 

これは、別の変数にラインから各列を置きます。私は同じことをしたいが、私はどのようにさまざまな数の列でこれを行うか分からない。

+5

'split 'の結果は、すでにすべての列の値の配列を与えています。なぜそれで十分ではないのですか? – Mureinik

+2

実際の問題は何ですか?分裂が解決されたようです。問題は、固定数の変数に任意の数の値を格納しようとしているようです。なぜあなたはそれをする必要がありますか?あなたはすでに値を持っています。 –

答えて

3

コメントに記載されているように、あなたはあなたがしたことでかなり良いです。あなたが本当にあなたの整数値は何とか保存したい場合は、単純に整数配列を使用しており、このようなループでそれを埋めることができます:全体のことは、あなたの行を反復処理するために使用するループ内であること

String[] words = line.split("\t"); 
int[] numbers = new int[words.length]; 
for (int i = 0; i < words.length; i++) 
{ 
    numbers[i] = Integer.parseInt(words[i]); 
} 

こと。

配列より複雑なものは必要ありません。

+1

'Integer.parseInt'は' int'を返します、なぜあなたは 'Integer'でそれをラップしましたか? – Andrew

+1

これはprofessionnal変形のため、申し訳ありません(私たちは私の会社でカスタマイズされた整数を使用しています)。プリミティブint配列で十分です。 =) – KC07

+0

'int [] cols = words.mapToInt(Integer :: parseInt).toArray();' – Andrew

関連する問題