我有一些代码,可以根据用户的输入运行两个数字的加法或减法,其中他们可以输入一个字符串,后跟一个整数来执行操作,或者只输入一个字符串来关闭程序。
我的代码如下所示:
private static int result = 0;
public static void main(String[] args){
Scanner kb = new Scanner(System.in);
String operation = "";
int num = 0;
boolean finished = false;
while(!finished){
System.out.println("Enter the operation you'd like to perform on " + result + " or type q to quit.");
operation = kb.next();
if(kb.hasNextInt()){ num = kb.nextInt(); } //The problem
switch (operation){
case "add":
add(num);
break;
case "subtract":
subtract(num);
break;
case "q":
finished = true;
break;
}
System.out.println("New result: " + result);
}
System.out.println("Bye!");
}
public static void add(int num){
result += num;
}
public static void subtract(int num){
result -= num;
}
在我的程序中,用户可以输入“add 3”来将 3 添加到结果中, 或者“subtract 7”从结果中减去7,但是输入“q”只会提示用户继续输入,而不是按预期关闭程序。我希望
if(kb.hasNextInt())
方法能够检测用户是否输入了整数,并且仅在输入时才运行 num = kb.nextInt()
,但情况似乎并非如此。输入“q”应该关闭程序,但它会继续搜索输入。如果字符串后面没有 int,我怎样才能告诉我的程序不要寻找 int?
我考虑将整个输入作为字符串并使用 .split() 来提取 int,但这似乎是一个糟糕的解决方案,我确信一定有一些我没有想到的更简单的方法。如有任何帮助,我们将不胜感激!
尝试更改您的代码如下
if(kb.hasNextInt())
{ num = kb.nextInt(); }
else
{kb.next();continue;}
hasNextInt
仅检查输入,并不实际处理它们。所以你需要使用 next
来跳过之前的输入。