gpt4 book ai didi

java - 尝试编写一个方法来检查 JAVA 中的用户输入,得到 NoSuchElementException

转载 作者:行者123 更新时间:2023-12-01 19:00:35 25 4
gpt4 key购买 nike

我正在尝试编写一种方法来处理控制台应用程序中用户的所有输入。我一共调用这个方法5次。第一次,条件是

a) 数字必须是正数且实数值( double )

接下来的4次条件是

b) 数字必须大于 1

这是我的方法:

private static double numChk(int errNum) {

final String[] ERROR_MESSAGE = {
"\nPlease enter only positive, real-valued numbers",
"\nPlease enter only positive numbers greater than 1" };
Scanner in = new Scanner(System.in);
double tempData;

while (!in.hasNextDouble()) {
System.out.println(ERROR_MESSAGE[errNum]);
System.out.print(" Please try again: ");
in.next();
}
tempData = in.nextDouble();

// in.close();
return tempData;
}

这是对此方法的调用示例:

 do {
System.out
.println("Please enter only positive, real-valued numbers");
System.out.print(" Enter a constant: ");
mu = numChk(0);
} while (mu <= 0);

注意“//in.close();”在我写的方法中。在不关闭扫描仪的情况下,此方法可以正常工作。但是,我的任务要求我确保关闭所有打开的输入流。如果我关闭方法中的输入流并重新打开它,我会收到 NoSuchElementException。我知道我可以将所有这些放入我的主方法中并在其末尾关闭输入,但是,我想知道是否有办法做到这一点(输入验证,多次)并能够关闭输入流。

最佳答案

当你调用 in.close() 时,你也关闭了 System.in。下次您尝试使用新的扫描程序时,它将尝试使用封闭的 System.in,这就是为什么当您尝试从中读取时会出现异常

参见: Using Scanner.next() to get text input

关于java - 尝试编写一个方法来检查 JAVA 中的用户输入,得到 NoSuchElementException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12410173/

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