Search code examples
javaloopswhile-looptry-catchinfinite

BufferedReader Infinite Loop - Java


I am very new to Java and I am trying to make a lottery game and I am stuck on the first step. The first step is that the user enters their input and if it's a number and between 1 - 100 then I want the user to exit out of the while loop but If the user enters a number bigger than 100 or smaller than one or not a number, then it should go back and ask the user to input a number again. I did something similar to this with python but in java it doesn't wait for my next input!!

here is my code:

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

        }


    }

Basically if there is an error, I want it to go back to the input instead of infinite looping.


Solution

  • You should not be calling buffer.close() inside the loop.