我正在研究一个Java程序,该程序要求用户提供数字,当他们不输入数字时,它会被一个InputMismatchException异常捕获。当异常发生两次时,程序应结束并向用户提供数字的总和。但是,我无法让程序在其当前状态下运行。当我运行该程序时,它会立即终止,甚至不会要求任何输入。一旦我理解了这一点,我甚至不确定我的工作是否有效!任何指导表示赞赏。
public static void main(String[] args) {
float input = 0;
float sum = 0;
int count = 0;
boolean attempt = true;
Scanner in = new Scanner(System.in);
while (attempt)
{
try
{
System.out.print("Enter a number: ");
input = in.nextFloat();
sum += input;
}
catch(InputMismatchException e)
{
System.out.println("Not a number. Try again");
count ++;
if (count >=2)
{
attempt = false;
}
}
}
System.out.println("Sum: " + sum);
}
}
答案 0 :(得分:2)
我所做的只是在catch子句中添加in.nextLine()
来更正代码。
in.nextLine();
System.out.println("Not a number. Try again");
count ++;
你的Scanner
对象留下了一个悬挂的行尾字符,用于输入in.nextFloat()
在2 nd 迭代中立即拾取的非数字。< / p>
这是您可以运行的完整课程。
import java.util.InputMismatchException;
import java.util.Scanner;
public class Sum {
public static void main(String[] args) {
float input = 0;
float sum = 0;
int count = 0;
boolean attempt = true;
Scanner in = new Scanner(System.in);
while (attempt)
{
try
{
System.out.print("Enter a number: ");
input = in.nextFloat();
sum += input;
}
catch(InputMismatchException e)
{
in.nextLine();
System.out.println("Not a number. Try again");
count ++;
if (count >=2)
{
attempt = false;
}
}
}
System.out.println("Sum: " + sum);
}
}