2

我有一个基于客户端-服务器控制台的应用程序,在客户端我使用 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;

该过程完成后,我需要再次发送用户切换(选择)语句,要求输入选项编号。我试过continuereturn但没有一个对我有用。return - 我想将返回到 JVM,它正在退出程序。由于 Java 中不使用 goto,我的替代方案是什么?

4

5 回答 5

7

该过程完成后,我需要再次发送用户切换(选择)语句

然后你需要一个循环:

while (!quit) {
    String userchoice = console.readLine("Enter your choice :"); 
    ...
    switch (...) {
        ...
    }
}
于 2012-10-04T09:59:19.217 回答
5
do {

...

}while(choice != EXIT_CHOICE);

其中 EXIT_CHOICE 是一个常数

于 2012-10-04T10:00:23.697 回答
0

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

while (some condition) {
    String userchoice = console.readLine("Enter your choice :");
    ......
    if (some case is met) {
        break;
    }
}
于 2012-10-04T10:00:08.000 回答
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));
于 2012-10-04T10:00:42.390 回答
0

它不能以这种方式工作。当你到达一个开关时,它决定(基于评估的表达式和存在的选择)哪个将是下一个要执行的操作,并且什么都不做(这就是为什么你需要break语句来避免遇到下一个代码)。

让开关进入循环或被调用两次的函数。

于 2012-10-04T10:01:28.720 回答