2017-04-10 4 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

数字の間にスペースが1つありますか?あなたは各行の数を合計したいですか? – 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 it works – MatthewNew

2

区切り記号としてスペースを使用して各行を分割できます。次に数値に変換して合計します。各数字と整数だけの間に1つのスペースがあると仮定すると、次のようにすることができます。基準は、スペースで区切られた数字を使用して、各ループプリントのラインを意味し、私はここで働くすべてを正しく理解していれば、あなたのコードに応じて

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

合計のデータ型が長い場合は – opensam

+0

上記のコードは各行を合計しています。numbers変数は、計算した各行の文字列です – stinepike

関連する問題