2016-10-11 61 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

這是由於專業變形,對不起(我們在我的公司使用定製的整數)。基本int數組確實足夠。 =) – KC07

+0

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

相關問題