【问题标题】:Switch in Java is loopingJava中的开关正在循环
【发布时间】:2011-08-31 02:16:29
【问题描述】:

我的 switch 语句一直在循环。它应该打印您选择的选项,然后重新打印菜单。请帮忙! 这是我的代码:

menu ="\n\t1  Create Account" + 
            "\n\t2  Check balance" +
            "\n\t3  Withdraw" +
            "\n\t1  Deposit" + 
            "\n\t2  Get account ID" +
            "\n\t3  Set ID" +
            "\n\t1  Display Account Info" +

            "\n\t0  Quit\n\n\n";

    System.out.println(menu);
    System.out.println("\tEnter your selection:  ");
    option = scan.nextInt();

while (option != 0) {

            switch (option) {

            case 1: //  Enter and Validate SSN
                        System.out.print("option 1");
                        break;

            case 2:     //Enter and Validate Passwords
                        System.out.print("option 2");
                        break;

            case 3:     //Enter,Verify, and Translate a Phone keypad Number
                        System.out.print("option 3");
                        break;

            case 4: //  Enter and Validate SSN
                        System.out.print("option 4");
                        break;

            case 5:     //Enter and Validate Passwords
                        System.out.print("option 5");
                        break;

            case 6:     //Enter,Verify, and Translate a Phone keypad Number
                        System.out.print("option 6");
                        break;

            case 7:     //Enter,Verify, and Translate a Phone keypad Number
                        System.out.print("option 7");
                        break;

            default: outputString = "\nInvalid Selection\n";
                        System.out.println(outputString);
                        break;

        }
    }

【问题讨论】:

  • 为什么首先需要循环? if 声明不够吗?如果你想重新打印菜单,循环现在不会这样做;也许循环也应该包含那个块。
  • 不,输入选择后需要继续打印菜单。 0 退出它
  • 当我说循环不会那样做时,这就是我的意思。您的循环体只打印选项,直到它为 0,并且主体中没有任何内容可以将其设置为 0。您需要一个 do...while 循环,以及打印逻辑。

标签: java loops switch-statement


【解决方案1】:

我很确定是您的 while 循环在执行循环。而且你永远不会在循环体内改变option 的值,所以它当然会连续运行。

大概,你想移动这条线:

option = scan.nextInt();

到循环的第一行:

while (option != 0) {
    option = scan.nextInt();
    ... 
}

【讨论】:

  • 我需要它在您选择后再次打印菜单。它只是继续打印您现在按下的选项。
  • @Josh,我没有关注你。如果您接受我的建议,它将打印出您刚刚输入的选项。这不是你想要的吗?如果您想每次都查看菜单,请将这些内容也移到循环主体中。
  • 哇,好的,谢谢。我只是把它放在循环的末尾来回忆。你所说的只会更简单地做同样的事情。谢谢!
  • 他需要一个案例来让0 变得漂亮(现在它会落到default 并说在跳出循环之前有一个错误)
【解决方案2】:

选项在您拥有的 while 循环中永远不会改变 - 如果您输入任何不是 0 的内容,则会导致无限循环

【讨论】:

    【解决方案3】:

    do while 循环需要更少的代码:

    menu ="\n\t1  Create Account" + 
            "\n\t2  Check balance" +
            "\n\t3  Withdraw" +
            "\n\t1  Deposit" + 
            "\n\t2  Get account ID" +
            "\n\t3  Set ID" +
            "\n\t1  Display Account Info" +
    
            "\n\t0  Quit\n\n\n";
    
    do {
      System.out.println(menu);
      System.out.println("\tEnter your selection:  ");
      option = scan.nextInt();
      switch (option) {
    
        case 1: //  Enter and Validate SSN
        System.out.print("option 1");
        break;
    
        case 2:     //Enter and Validate Passwords
        System.out.print("option 2");
        break;
    
        case 3:     //Enter,Verify, and Translate a Phone keypad Number
        System.out.print("option 3");
        break;
    
        case 4: //  Enter and Validate SSN
        System.out.print("option 4");
        break;
    
        case 5:     //Enter and Validate Passwords
        System.out.print("option 5");
        break;
    
        case 6:     //Enter,Verify, and Translate a Phone keypad Number
        System.out.print("option 6");
        break;
    
        case 7:     //Enter,Verify, and Translate a Phone keypad Number
        System.out.print("option 7");
        break;
    
        default: outputString = "\nInvalid Selection\n";
        System.out.println(outputString);
        break;
    
      } while (option != 0)
    
    
    }
    

    【讨论】:

      【解决方案4】:

      您的代码一直在循环,因为option 的值在您处于循环中时永远不会改变。您需要以不同的方式编写逻辑。顺便说一句,switch 不循环,while 循环。

      【讨论】:

        猜你喜欢
        • 2021-02-07
        • 1970-01-01
        • 2020-10-31
        • 1970-01-01
        • 2020-07-06
        • 2014-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多