在java中返回控制到开关语句?

在java中返回控制到开关语句?,java,loops,Java,Loops,我有一个基于客户机-服务器控制台的应用程序,在客户机端,我使用switch语句选择选项,例如当用户输入一个数字进行设置时,上传/下载/更改密码等 String userchoice = console.readLine("Enter your choice :"); int choice= Integer.parseInt(userchoice); switch (choice){ case 3: ........

我有一个基于客户机-服务器控制台的应用程序,在客户机端,我使用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;
完成该过程后,我需要再次发送用户切换(选择)语句,要求输入选项号。我尝试了继续返回,但没有一个对我有效return-我想将返回JVM,它正在退出程序。由于goto不在Java中使用,我的替代方案是什么

在这个过程完成之后,我需要再次发送user to switch(choice)语句

然后需要一个循环:

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

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

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

如果EXIT_CHOICE是一个常量

,您可以将其全部放在一个返回布尔值的方法中,如果密码匹配,则返回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));

它不是这样工作的。当您到达一个开关时,它决定(根据计算的表达式和当前的选项)哪一个将是下一个要执行的操作,并且不做更多的事情(这就是为什么您需要
break
语句来避免运行到下一组代码中)

将开关放入一个循环或一个被调用两次的函数中

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