TheNodeCommode
TheNodeCommode

Reputation: 93

Switch statement + user input

Thanks for taking your time to help me. I need this switch statement to only accept ints 1-4. Any others entered will ask for input again. Entering 5 will quit the system.

     System.out.println("A random numbers list has been generated for you:\n ");

     System.out.println("Choose an option:\n1)Form list to be heapified.\n2)Enqueue the integer 10" +
        "\n3)Dequeue the integer 10.\n4)Print the updated heap.\n5)Quit the system \n>>"); 
     Scanner scanner = new Scanner( System.in );
     int var = 0;
     String input = scanner.next();
     int answer = Integer.parseInt(input);

     do{
        input = scanner.next();
        answer = Integer.parseInt(input);
        var = answer;

     switch(var){
        case 1:
           for (int i = 0; i < 20; i++) {
              h.insert(new Integer((int)(100 * Math.random())), i);
           }
           break;
        case 2:
           System.out.println("\nEnqueue-ing 10...\n");
                pushFoward(10, 20);//priority 20
           break;
        case 3:
        System.out.println("\nDequeue-ing 10...\n");
            dequeue;//priority highest deleted

           break;
        case 4:
           while (h.heapsize() > 0) {
              System.out.print(h.pop() + " ");
           } 
           break;
     } 
     }while(var ==1 || var==2 || var==3
     || var==4);

I cant seem to get it right. Keep making it worse.

Edited:

 do{
    String input = scanner.next();
             int answer = Integer.parseInt(input);
     switch(var){
        case 1:
           for (int i = 0; i < 20; i++) {
              h.insert(new Integer((int)(100 * Math.random())), i);
           }
           break;
        case 2:
           System.out.println("\nEnqueue-ing 10...\n");
                h.pushFoward(10, 20);//priority 20
           break;
        case 3:
        System.out.println("\nDequeue-ing 10...\n");
            h.dequeue();//priority highest deleted

           break;
        case 4:
           while (h.heapsize() > 0) {
              System.out.print(h.pop() + " ");
           } 
           break;
           default: input = scanner.next();
            break;
     } 
     }while(var!=5)

;

Upvotes: 0

Views: 11142

Answers (3)

rocketboy
rocketboy

Reputation: 9741

You don't need to put it in a loop. The use case is simple:

  • For 1-4 : do something and then return
  • For 5: quit/return Everything
  • else: ask for input again

    public static void main(String[] args) {

    Scanner scanner = new Scanner(System.in);
    int answer = Integer.parseInt(scanner.next());
    
      switch(answer) {
        case 1:
            System.out.println(1);
            break;
        case 2:
            System.out.println(2);
            break;
        case 3:
            System.out.println(3);
            break;
        case 4:
            System.out.println(4);
            break;
        case 5:
            return; // System.exit(0) or quit however you want to
        default:
            answer = Integer.parseInt(scanner.next());
        }
    

    }

Upvotes: 0

Bryce
Bryce

Reputation: 46

You can set a 'default' case.

default: doSomething();
                 break;

This will be invoked when a user enters a value that isn't one of your cases.

} while (answer != 5);

This should make the loop break when 5 is entered.

EDIT:

Also, you need to switch on the answer variable instead of 'var'

switch(answer) {

Upvotes: 1

Geforce132
Geforce132

Reputation: 73

Try adding a "default:" statement, like this:

    switch(var){
    case 1:
       for (int i = 0; i < 20; i++) {
          h.insert(new Integer((int)(100 * Math.random())), i);
       }
       break;
    case 2:
       System.out.println("\nEnqueue-ing 10...\n");
            pushFoward(10, 20);//priority 20
       break;
    case 3:
    System.out.println("\nDequeue-ing 10...\n");
        dequeue;//priority highest deleted

       break;
    case 4:
       while (h.heapsize() > 0) {
          System.out.print(h.pop() + " ");
       } 
       break;
    default:
        *Add whatever code you want to execute if its greater then or equal to 5 here!*

 }while(var ==1 || var==2 || var==3
 || var==4);

Upvotes: 3

Related Questions