2015-05-09 69 views
2
package Lessons; 

import java.util.Scanner; 

public class Math { 
    public static void main(String[] args) { 
     Scanner s = new Scanner(System.in); 
     System.out.print("please enter the first number of your question! "); 
     int a1 = s.nextInt(); 
     System.out.print("So you chose " + a1); 
     System.out.println(" Choose ur second number"); 
     int a2 = s.nextInt(); 
     System.out.print("You chose " + a2 + " for your second number"); 
     System.out.print(" Now enter ur operator "); 
     String b1 = s.nextLine(); 
     if (b1.equalsIgnoreCase("-")) { 
      System.out.println("You chose " + b1 + "as ur operator"); 
     } 
    } 

} 

我不明白爲什麼15行不採取任何輸入,任何幫助,將不勝感激:3爲什麼我的Java掃描儀不能輸入?

輸出

請輸入您的問題的第一個數字! 2552所以,你選擇了2552 選擇烏爾第二個數字41,您爲您的第二號選擇41現在 進入烏爾操作

輸出端,並在最後一行停止出於某種原因,並沒有採取任何信息!

+0

您可以發佈您的輸出嗎? – JavaFanatic

回答

3

您需要呼叫in.nextLine()緊接您撥打的電話號碼in.nextInt()之後。原因是隻要求下一個整數不會消耗輸入中的整個行,因此您需要跳到下一個新行通過調用in.nextLine()輸入字符。

int a2 = s.nextInt(); 
s.nextLine(); 

這幾乎是每一個有你需要調用一個不消耗整條生產線的方法,後得到一個新的行時間來完成,例如,當你調用nextBoolean()

+0

即時通訊做一個字符串即時通訊,試圖採取不是一個int :) – chandler11able

+0

@Phoenix請重新閱讀我的答案,這是你的問題的解決方案。 – SamTebbs33

+0

哦,對不起!你是對的!感謝m8! :D – chandler11able

1

調用s.nextInt()爲讀取下一個int,但之後不讀取新的行字符。

... 
System.out.print(" Now enter ur operator "); 
s.nextLine(); 
String b1 = s.nextLine(); 
... 
0

試試這個:所以新線將上線15如果你是確保每一個輸入將被放在一個單獨的線被讀取,那麼你可以通過把一個額外的s.nextLine()線15前解決這個問題用於輸入字符串的部分。

`System.out.print(" Now enter ur operator "); 
    String b1 =s.next(); 
    if (b1.equalsIgnoreCase("-")) { 
     System.out.println("You chose " + b1 + "as ur operator"); 
}`