2017-04-10 44 views
0

我有一個txt文件,在幾行之間的空格之間的數字,我想將每行中的數字加在一起,並寫入該行的結尾的數量。我用換行符分割文件,沒關係,但我不知道如何將這些數字加起來。加在一起的數字

ArrayList<String> numbers = new ArrayList<>(); 
try { 
    RandomAccessFile raf= new RandomAccessFile("numbers.txt","rw"); 
    while (raf.getFilePointer() < raf.length()) { 
     String sor = raf.readLine(); 

     String newline[] = sor.split("\r\n"); 
     for (String item:newline) { 
      numbers.add(item); 
     } 

    } 
    // just test 
    for(String item:numbers) 
     System.out.println(item); 

    raf.close(); 
}catch (IOException e) { 
    System.err.println("An error was occured: "+ e); 
} 
+0

數字之間是否有單個空格?你想總結每行的數字嗎? – stinepike

+2

請勿使用'RandomAccessFile'。改爲使用'BufferedReader'。使用'readLine()'讀取一行,然後使用'split()'作爲空格,並使用'Integer.parseInt()'將每個元素轉換爲'int',並將它們相加。 – Andreas

+0

您可以使用'Integer.valueOf(item)'將'String'轉換爲'Integer'(以便您可以使用加法)。編輯:也許'Integer.parseInt(item)'更好。 –

回答

2

如果我在這裏工作的理解正確的一切,這意味着與空間分隔的數字你的每一個循環的打印線?如果是的話,那麼你需要:

numbers.stream().forEach(s -> 
    System.out.println(Arrays.stream(s.split("\\s+")).mapToInt(Integer::parseInt).sum())); 

numbers名單上獲取流,然後我們每次用空格分開它線,解析每個數字爲整數,然後總結這些數字。

當然,您可以將它添加到總和列表中,或者直接追加到您的行中,而不是打印您的選擇。

+0

ty bro bro it works – MatthewNew

2

您可以使用空格作爲分隔符來分隔每一行。然後轉換爲數字並對它們進行求和。假設每個數字和只有整數之間的單個空格,你可以像下面這樣做。當條件改變你可以改變你的代碼,因此

for(String item:numbers){ 
     String n[] = item.split(" "); 
     for(String number: n) 
      sum+= Integer.parseInt(number); 
     System.out.println(sum); 
     sum = 0; 
} 
+0

也許sum的數據類型應該很長 – opensam

+0

上面的代碼是對每一行進行求和..數字變量是你計算的每一行的字符串 – stinepike