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 值,如果得到它就跳出循环。