Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
BufferedReader无限循环-Java_Java_Loops_While Loop_Try Catch_Infinite - Fatal编程技术网

BufferedReader无限循环-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

我对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");
            }

        }


    }
公共类彩票{
/**
*@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
的值,如果得到该值,则中断循环。

确定要关闭循环中的缓冲区吗?谢谢,我刚刚移动了缓冲区。在中断前关闭,现在它就像一个符咒一样工作。谢谢!