2016-07-13 13 views
1

入力からの最後の行がループ上で回避されるという問題があります。最後の入力行がループに含まれていません

例入力:

+ 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); 
     } 
} 

ループ中もテストしましたが、まったく同じです。助けてもらえますか?

+1

最後のものの次の行がないので、最後の入力後に空白行を入力してください;) –

+0

これは修正なしで私の日食で動作しています。それをもう一度実行してください。 –

答えて

0

私はScannerで同じ問題がありました。 コマンドnextInt()はenterを読み取っていないので、Enterヒットを次のScannerの入力として受け取ります。 「String trash = reader.nextLine();」を追加してください。すべてのnextIntの後に。 少なくともスキャナの問題で私を助けました:)

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])); 
    ... 
} 
関連する問題