我有一个基于客户端 - 服务器控制台的应用程序,在客户端我使用了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中使用,我的替代方案是什么?
答案 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
语句来避免遇到下一堆代码。)
切换到循环或被调用两次的函数。