使用break java scanner单独求和

时间:2014-11-11 05:34:41

标签: java loops io switch-statement

我在txt中有数据:

1 
2
3

4
5
6
7
8

如果我想在单独的ex中求和:1 + 2 + 3结果是6和4 + 5 + 6 ... n = 30

分隔列表表示用空行分隔的数字列表。例如,在上面的示例中,数字1 2 34 5 6 7 8用空行分隔。我想要前3个数字的总和,然后分别接下来的5个数字。

Scanner sc = new Scanner (new File("patch.txt");
while (sc.hasNextLine()) {
   //sum each numbers
} 

我该怎么办?使用扫描仪读取数据。

3 个答案:

答案 0 :(得分:3)

Scanner sc= new Scanner (new File("patch.txt")); 
int sum = 0;
while (/* Condition to ensure end of file: sc.hasNextLine or similar */)
{
 String str = sc.nextLine ();  // Read the line
 if(str.isEmpty()) {  // There was no number. You may want to add more checks for example check space only string, dash string etc
   // Print separated sum
   System.out.println ("Sum = " + sum);
   sum = 0; // reset sum
 } else {
   // Update sum
   sum += Integer.parseInt (str);
 }
}

Live example here

答案 1 :(得分:0)

Scanner sc= new Scanner (new File("patch.txt")); 
int sum = 0;
while (sc.HasNextLine ())

{
 //sum each numbers

 String str = sc.nextLine ();
 sum += Integer.parse (str);

}

答案 2 :(得分:0)

您可以执行以下操作。但是如果文件末尾有一个空行,则不需要在外面输出print语句。

    Scanner sc = new Scanner(new File("patch.txt"));
    int sum=0;
    while(sc.hasNextLine()){
        try{
        sum +=Integer.parseInt(sc.nextLine());
        }
        catch(Exception e){
            System.out.println(sum);
            sum=0;
        }
    }
    System.out.println(sum);
    sc.close();

这样做,它遍历每一行,当它是一个整数时加上sum。当在空行抛出异常时,总和初始化为零。