BufferedReader无限循环-Java
我对Java非常陌生,我正在尝试做一个彩票游戏,我被困在第一步。第一步是用户输入他们的输入,如果它是一个数字并且在1-100之间,那么我希望用户退出while循环,但是如果用户输入的数字大于100或者小于1或者不是一个数字,那么它应该返回并要求用户再次输入一个数字。我用python做了类似的事情,但在java中它不会等待我的下一次输入 这是我的密码:BufferedReader无限循环-Java,java,loops,while-loop,try-catch,infinite,Java,Loops,While Loop,Try Catch,Infinite,我对Java非常陌生,我正在尝试做一个彩票游戏,我被困在第一步。第一步是用户输入他们的输入,如果它是一个数字并且在1-100之间,那么我希望用户退出while循环,但是如果用户输入的数字大于100或者小于1或者不是一个数字,那么它应该返回并要求用户再次输入一个数字。我用python做了类似的事情,但在java中它不会等待我的下一次输入 这是我的密码: public class Lottery { /** * @param args the command line arguments
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");
}
}
}
公共类彩票{
/**
*@param指定命令行参数
*/
公共静态void main(字符串[]args){
System.out.println(“\t\t乐透!”);
布尔布尔布尔检查=真;
System.out.println(“请输入一个介于1和100之间的数字:”);
InputStreamReader isr=新的InputStreamReader(System.in);
BufferedReader buffer=新的BufferedReader(isr);
字符串输入=”;
虽然(正确){
试试{
输入=buffer.readLine();
buffer.close();
input.trim();
int intInput=Integer.parseInt(输入);
如果(intInput>=1&&intInput您不应该在循环内调用buffer.close()。您不应该调用close()
在循环内,或者在循环内捕获IOException
,或者如果捕获到一个break
,而不是SocketTimeoutException
。您还应该测试每个readLine()
返回null
的值,如果得到该值,则中断循环。确定要关闭循环中的缓冲区吗?谢谢,我刚刚移动了缓冲区。在中断前关闭,现在它就像一个符咒一样工作。谢谢!