在java中返回控制切换语句?

时间:2012-10-04 09:55:45

标签: java loops

我有一个基于客户端 - 服务器控制台的应用程序,在客户端我使用了switch语句来选择上传/下载/更改密码等选项。当用户为假设输​​入一个数字时

      String userchoice = console.readLine("Enter your choice :"); 
      int choice= Integer.parseInt(userchoice);
      switch (choice){  
      case 3: 
      ........
      Socket soc = new Socket("localhost", 6007);
      String reply;
      String client = username;
      char newpswd[] = console.readPassword("Enter your new Password :");
      String newpwd=new String(newpswd);
      char newpswd1[] = console.readPassword("Confirm your new Password :");
      String newpwd1=new String(newpswd1);
      if(newpwd.equals(newpwd1)) {
      ........
      }
      else {
      S.O.P ("Passwords don't match");  
      }
      break;

在完成该过程后,我需要再次向用户发送切换(选择)语句,要求输入选项号。我尝试过继续返回,但没有人能为我工作。 返回 - 将返回我想的JVM,即退出程序。由于goto没有在Java中使用,我的替代方案是什么?

5 个答案:

答案 0 :(得分:7)

  

完成该过程后,我需要再次将用户发送到switch(choice)语句

然后你需要一个循环:

while (!quit) {
    String userchoice = console.readLine("Enter your choice :"); 
    ...
    switch (...) {
        ...
    }
}

答案 1 :(得分:5)

do {

...

}while(choice != EXIT_CHOICE);

其中EXIT_CHOICE是常量

答案 2 :(得分:0)

您可以使用while循环,该循环将执行,直到条件为false或从内部中断为止。

while (some condition) {
    String userchoice = console.readLine("Enter your choice :");
    ......
    if (some case is met) {
        break;
    }
}

答案 3 :(得分:0)

你可以将它全部放在一个返回布尔值的方法中,如果密码匹配则为true,否则为false。然后你可以使用类似的东西:

boolean loginSuccess = false;
while (!loginSuccess) {
    loginSuccess = loginMethod();
}

修改

或者你可以使用do循环...

do {
    String userchoice = console.readLine("Enter your choice :"); 
    int choice= Integer.parseInt(userchoice);
    switch (choice){  
    case 3: 
    ........
    Socket soc = new Socket("localhost", 6007);
    String reply;
    String client = username;
    char newpswd[] = console.readPassword("Enter your new Password :");
    String newpwd=new String(newpswd);
    char newpswd1[] = console.readPassword("Confirm your new Password :");
    String newpwd1=new String(newpswd1);
} while (!newpwd.equals(newpwd1));

答案 4 :(得分:0)

这种方式不起作用。当你到达一个开关时,它决定(基于所评估的表达式,以及所存在的选择)将是下一个要执行的操作,并且不再做任何事情(这就是为什么你需要break语句来避免遇到下一堆代码。)

切换到循环或被调用两次的函数。