2013-07-27 3 views
-1

Спасибо, что нашли время, чтобы помочь мне. Мне нужен этот оператор switch только для принятия ints 1-4. Любые другие пользователи снова запросят ввод. Ввод 5 выйдет из системы.Заявление оператора + ввод пользователя

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

Я не могу понять, как это правильно. Держите его хуже.

Отредактировано:

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) 

;

ответ

1

Вы можете установить случай 'по умолчанию'.

default: doSomething(); 
       break; 

Это будет вызываться, когда пользователь вводит значение, которое не является одним из ваших случаев.

} while (answer != 5); 

Это должно сделать перерыв в петле при вводе 5.

EDIT:

Кроме того, вы должны переключиться на переменном ответ вместо «вара»

switch(answer) { 
3

Попробуйте добавить "по умолчанию:" заявление, как это:

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); 
+0

Хммм, что помогло. Но я не думаю, что сканер очищается? Он не правильно принимает вход и не запускает переключатель? – TheNodeCommode

+0

Вы добавили «break» после вашего кода в заявлении по умолчанию? – Geforce132

+0

Да, я добавил. – TheNodeCommode

0

Вам не нужно положить его в петле. Прецедент прост:

  • Для 1-4: сделать что-то, а затем вернуться
  • Для 5: бросить/вернуть все
  • еще: попросить вход снова

    государственной статической силы основных (String []) {арг

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

    }

Смежные вопросы