简体   繁体   English

切换语句+用户输入

[英]Switch statement + user input

Thanks for taking your time to help me. 感谢您抽出宝贵的时间来帮助我。 I need this switch statement to only accept ints 1-4. 我需要此switch语句仅接受整数1-4。 Any others entered will ask for input again. 输入的其他任何内容都会再次要求输入。 Entering 5 will quit the system. 输入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);

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)

; ;

Try adding a "default:" statement, like this: 尝试添加“ default:”语句,如下所示:

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

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. 输入5时,这应该使循环中断。

EDIT: 编辑:

Also, you need to switch on the answer variable instead of 'var' 另外,您需要打开答案变量而不是'var'

switch(answer) {

You don't need to put it in a loop. 您无需将其循环。 The use case is simple: 用例很简单:

  • For 1-4 : do something and then return 对于1-4:做点什么然后返回
  • For 5: quit/return Everything 对于5:退出/返回所有内容
  • else: ask for input again 其他:再次要求输入

    public static void main(String[] args) { 公共静态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()); } 

    } }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM