为什么我的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"); }`