gpt4 book ai didi

java - java中非数字输入的无限循环

转载 作者:太空宇宙 更新时间:2023-11-04 12:07:04 25 4
gpt4 key购买 nike

这是一个简单的 java 函数,采用 double 输入。它接受输入并首先检查该值是否为非数字。然后检查该值是否大于0。

我面临的问题是每次输入非数字输入时,它都会运行无限循环并且只打印“输入大于或等于1.0的数字:”

double getInput(double n) {
Scanner kbd = new Scanner(System.in);
boolean flag = false;
boolean check = false;
while (!flag) {
System.out.println("Enter a number greater or equal to 1.0: ");
try {
n = kbd.nextDouble();
if (n >= 0 || n < 0)
check = true;
} catch (InputMismatchException ex) {
err.print("Invalid Data Type (not Numeric)");
}
if (check == true) {
if (n < 0)
System.out.println("Invalid value (too small)");
else
flag = true;
}
}
return n;
}

最佳答案

kbd.nextDouble 不消耗换行符,因此这些字符将被重复传递到 while 循环中。

在 catch block 中,您可以传递 kbd.nextLine() 而不是仅仅抛出异常,以便为下一个循环您的输入方法做好准备。

catch(InputMismatchException ex)
{

System.out.println("Invalid Data Type (not Numeric)");
kbd.nextLine();
}

这里是完整的代码:

double getInput(double n)
{

Scanner kbd = new Scanner( System.in );
boolean flag =false;
boolean check = false;
while(!flag)
{
System.out.println("Enter a number greater or equal to 1.0: ");
try
{

n = kbd.nextDouble();

if(n>=0 || n<0)check = true;
}
**catch(InputMismatchException ex)
{

System.out.println("Invalid Data Type (not Numeric)");
kbd.nextLine();
}**

if(check==true)
{
if(n<0)
System.out.println("Invalid value (too small)");
else
flag = true;
}
}
return n;
}

关于java - java中非数字输入的无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40252756/

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