2011-08-31 39 views
1

我的switch语句只是保持循环。它应该打印您选择的选项,然后重新打印菜单。请帮忙! 这里是我的代码:在Java中切换循环

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; 

     } 
    } 
+0

为什么你需要摆在首位的循环? “if”语句是否足够?如果你想重印菜单,循环现在不会那样做;也许循环应该包含该块。 –

+0

不,它需要在输入您的选择后继续打印菜单。 0退出 – Josh

+1

这就是我说的循环不会那样做的意思。您的循环体只会打印该选项,直到它为0,并且主体中没有任何设置将其设置为0.您还需要一个'do ... while'循环以及打印逻辑。 –

回答

7

我敢肯定,这是你的while循环,是做循环。而且你永远不会改变循环体内的option的值,所以它当然会连续运行。

据推测,要招行:

option = scan.nextInt(); 

到循环的第一行:

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

我需要它在你选择后再次打印菜单。它只是不断打印你现在按下的选项。 – Josh

+1

@Josh,我没跟着你。如果你采纳我的建议,它会打印出你刚输入的选项。这不是你想要的吗?如果你想看每个*时间的菜单,那么将这些东西移动到循环体中。 –

+0

哇,好的,谢谢。我只是最终把它放在循环的最后回忆。你所说的只会简单地做同样的事情。谢谢! – Josh

2

选项在你有while循环从未改变 - 从而导致无限循环如果您输入的任何内容不是0

0

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

1

一个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) 


}