BufferedReader 无限循环 - Java
BufferedReader Infinite Loop - Java
我是 Java 的新手,我正在尝试制作彩票游戏,但我卡在了第一步。第一步是用户输入他们的输入,如果它是一个数字并且在 1 - 100 之间,那么我希望用户退出 while 循环但是如果用户输入大于 100 或小于 1 或不是数字的数字,然后它应该返回并要求用户再次输入一个数字。我用 python 做了类似的事情,但在 java 它不等待我的下一个输入!
这是我的代码:
public class Lottery {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.out.println("\t \tWelcome to the Lottery!");
boolean boolCheck = true;
System.out.println("Please enter in a number between 1 and 100: ");
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader buffer = new BufferedReader(isr);
String input="";
while (true) {
try {
input = buffer.readLine();
buffer.close();
input.trim();
int intInput = Integer.parseInt(input);
if (intInput >= 1 && intInput <= 100) {
break;
}
}
catch (IOException e) {
System.out.println("An input eror has occured");
}
catch (NumberFormatException e) {
System.out.println("Please enter in a number");
}
}
}
基本上如果有错误,我希望它回到输入而不是无限循环。
您不应该在循环内调用 buffer.close()。
你不应该在循环内调用 close()
,或者在循环内捕获 IOException
,或者如果你捕获了一个 break
,而不是 SocketTimeoutException
].您还应该测试 null
的每个 readLine()
return 值,如果得到它就跳出循环。
我是 Java 的新手,我正在尝试制作彩票游戏,但我卡在了第一步。第一步是用户输入他们的输入,如果它是一个数字并且在 1 - 100 之间,那么我希望用户退出 while 循环但是如果用户输入大于 100 或小于 1 或不是数字的数字,然后它应该返回并要求用户再次输入一个数字。我用 python 做了类似的事情,但在 java 它不等待我的下一个输入!
这是我的代码:
public class Lottery {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.out.println("\t \tWelcome to the Lottery!");
boolean boolCheck = true;
System.out.println("Please enter in a number between 1 and 100: ");
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader buffer = new BufferedReader(isr);
String input="";
while (true) {
try {
input = buffer.readLine();
buffer.close();
input.trim();
int intInput = Integer.parseInt(input);
if (intInput >= 1 && intInput <= 100) {
break;
}
}
catch (IOException e) {
System.out.println("An input eror has occured");
}
catch (NumberFormatException e) {
System.out.println("Please enter in a number");
}
}
}
基本上如果有错误,我希望它回到输入而不是无限循环。
您不应该在循环内调用 buffer.close()。
你不应该在循环内调用 close()
,或者在循环内捕获 IOException
,或者如果你捕获了一个 break
,而不是 SocketTimeoutException
].您还应该测试 null
的每个 readLine()
return 值,如果得到它就跳出循环。