gpt4 book ai didi

java - 程序立即终止

转载 作者:行者123 更新时间:2023-12-02 05:12:58 24 4
gpt4 key购买 nike

我正在开发一个 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);


}

}

最佳答案

我所做的就是向 catch 子句添加一个 in.nextLine() 来更正代码。

in.nextLine();
System.out.println("Not a number. Try again");
count ++;

您的 Scanner 对象在输入非数字时留下了一个悬挂的行尾字符,该字符立即被 2 上的 in.nextFloat() 拾取<次迭代。

这是您可以运行的完整类(class)。

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);
}
}

关于java - 程序立即终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27198367/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com