我正在尝试编写一种方法来处理控制台应用程序中用户的所有输入。我一共调用了这个方法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。我知道我可以将所有这些放入我的主要方法并在其末尾关闭输入但是,我想知道是否有办法做到这一点(输入验证,多次)并能够关闭输入流。