为什么我的Java扫描程序不接受输入?

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

产量

请输入您问题的第一个号码! 2552所以你选择2552选择你的第二个号码41你选择了41你的第二个号码现在输入你的运营商

由于某种原因,输出在最后一行结束并停止,并且不接受任何信息!

你需要在调用in.nextLine()的行之后调用in.nextInt()原因是只要求下一个整数不会消耗输入中的整行,所以你需要先跳到通过调用in.nextLine()输入下一个in.nextLine()

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

每次在调用不消耗整行的方法(例如调用nextBoolean()nextBoolean()后需要获取新行时,这几乎必须完成。

调用s.nextInt()会读取下一个int,但之后不会读取新行字符。 因此,新行将在第15行读取。如果您确定每个输入都将放在一个单独的行中,那么您可以通过在第15行之前添加一个额外的s.nextLine()来解决此问题:

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

尝试使用字符串输入部分。

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