最后一行输入未包含在循环中

时间:2016-07-13 11:44:02

标签: java

我遇到的问题是循环中避免了输入的最后一行。

示例输入:

+ 2 3
* 23 23 
/ 65 54
+ 23 23

计划给了我:

5
529
1

为什么不计算最后一行?

Scanner input = new Scanner(System.in);
for(int i = 0; input.hasNextLine(); i++){
        char c = input.next().charAt(0);
        int x = input.nextInt();
        int y = input.nextInt();

        if( c == '*'){
            System.out.println(x*y);
        }
        else if(c == '/'){
            System.out.println(x/y);
        }
        else if(c == '-'){
            System.out.println(x-y);
        }
        else if(c == '+'){
            System.out.println(x+y);
    }
        else if(c == '%'){
            System.out.println(x%y);
        }   
}

我在循环时也进行了测试,它完全一样。你能帮忙吗?

2 个答案:

答案 0 :(得分:0)

我遇到了与Scanner相同的问题。 命令nextInt()不读取输入,因此它将输入命中作为下一个扫描程序的输入。 尝试添加" String trash = reader.nextLine();"在每个nextInt之后。 至少这对我的扫描仪问题有帮助:))

答案 1 :(得分:0)

BufferedReader br = new BufferedReader(new FileReader(new File("data")));
String line = "";
while((line=br.readLine())!=-1){
   String[] data = line.split(" ");
   if(data[0].compareTo("+")==0)
     System.out.println(Integer.parseInt(data[1])+Integer.parseInt(data[2]));
   if(data[0].compareTo("*")==0)
     System.out.println(Integer.parseInt(data[1])*Integer.parseInt(data[2]));
   ...
}