gpt4 book ai didi

java - 浮点变量和异常处理

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:45:15 26 4
gpt4 key购买 nike

我的程序应该接受一个浮点变量然后退出。但是我正在练习一些异常处理的东西并发现了一个问题。每当您在该程序中输入一个字母时,该程序当然会抛出 InputMismatchException,但它会陷入无限循环。我认为我的问题是基于我对 try-catch 语句和异常处理的误解。

public static void main(String [] args){

Scanner reader = new Scanner(System.in);
boolean done = false;

do{
try{
System.out.print("Enter a number: ");
float number = reader.nextFloat();
done = true;
}
catch (Exception e){
System.out.println("uh oh");
}
}while(!done);
}

如果我使用不同的变量类型,则不会出现此问题,因此我不确定这是一个逻辑错误还是只是浮点变量的问题。

最佳答案

Float#nextFloat() 如果它抛出 InputMismatchException,则不会消耗 Scanner 中的 token 。因此,当您遇到异常并循环时(因为 done 仍然是 false),您尝试再次调用 nextFloat()。由于 token 仍然不是可以解析为 float 的值,因此 Scanner 再次抛出异常。一次又一次,令人作呕。

您应该使用 hasNextFloat() 来检查是否存在可以解析为 float 值的标记。或者使用 Scanner#next() 使用不正确的值,如 Quirliom 所建议的那样.

关于java - 浮点变量和异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28387903/

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