how to end a while loop with a certain variable

后端 未结 4 591
谎友^
谎友^ 2021-01-17 02:28

I am making an odd or even program with a while loop. I am trying to figure out how to end the while loop with a certain number. Right now I have 1 to continue the loop, and

相关标签:
4条回答
  • 2021-01-17 03:09

    To exit the program when the user enters anything other than a Number, change the variable x type to a String

    if (!StringUtils.isNumeric(x)) {
        System.exit(0);
    }
    

    To exit the program when user enters 2

    if (x == 2) {
        System.exit(0);
    }
    
    0 讨论(0)
  • 2021-01-17 03:11

    I did not follow the conditions you wanted exactly because it does not make sense to have a continue condition AND a terminate condition unless there are other options.

    What did you want the user to do if he entered 3, 4 or 5? Exit the code or continue the code? Well if the default is to exit, then you do not need the code to exit on 2 because it already will! If the default is to continue, then you do not need the continue on 1 and only the exit on 2. Thus it is pointless to do both in this case.

    Here is the modified code to use a do while loop to ensure the loop is entered at least 1 time:

        int x;
        do {
            System.out.println("Enter a number to check whether or not it is odd or even");
            Scanner s = new Scanner(System.in);
            int num = s.nextInt();
            if (num % 2 == 0)
                System.out.println("The number is even");
            else 
                System.out.println("The number is odd");
            //trying to figure out how to get the code to terminate if you put in a value that isn't a number
            System.out.println("Type 1 to check another number, anything else to terminate.");
    
            if (!s.hasNextInt()) {
                break;
            }
            else {
                x = s.nextInt();
            }
        } while(x == 1);
       }
    

    Note that I added a check to !s.hasNextInt() will check if the user enters anything other than an int, and will terminate without throwing an Exception in those cases by breaking from the loop (which is the same as terminating the program in this case).

    If the x is a valid integer, then x is set to the value and then the loop condition checks if x is 1. If x is not 1 the loop terminates, if it is it will continue through the loop another time.

    0 讨论(0)
  • 2021-01-17 03:19

    You should try to use "a real termination condition" in order to terminate a while loop (or any loop for that matter); it's cleaner and should be easier to understand by everyone else.

    In your case, I think it's better to have a do-while loop with some condition around this logic: num % 2 == 0, and an inner while loop for handling user input/validation.

    If you still want to break loops abruptly, have a look here.

    If you still need some help with the code, hit me up and I'll sketch up something.

    0 讨论(0)
  • 2021-01-17 03:26

    Another thing you can try is that instead of exiting the program you can just keep asking user to enter correct input and only proceed if they do so. I don't know what is your requirement but if you want to go by good code practice then you shouldn't terminate your program just because user entered wrong input. Imagine if you googled a word with typo and google just shuts off.

    Anyways here is how I did it

    
    import java.util.Scanner;
    
    public class oddoreven {
        public static void main(String[] args) {
            int num;
            int x = 1;
            while (x == 1) {
                System.out.println("Enter a number to check whether or not it is odd or even");
                Scanner s = new Scanner(System.in);
    
                boolean isInt = s.hasNextInt(); // Check if input is int
                while (isInt == false) { // If it is not int
                    s.nextLine(); // Discarding the line with wrong input
                    System.out.print("Please Enter correct input: "); // Asking user again
                    isInt = s.hasNextInt(); // If this is true it exits the loop otherwise it loops again
                }
                num = s.nextInt(); // If it is int. It reads the input
    
                if (num % 2 == 0)
                    System.out.println("The number is even");
                else
                    System.out.println("The number is odd");
                // trying to figure out how to get the code to terminate if you put in a value
                // that isn't a number
                System.out.println("Type 1 to continue, 0 to terminate");
                x = s.nextInt();
            }
    
        }
    }
    
    0 讨论(0)
提交回复
热议问题