在每个 switch-case 之后循环回到开始
Looping back to start after each switch-case
我正在寻找一种方法,在每个案例完成后 return 到 'menu',并且在选择退出时仅 exit/close 程序。我假设会使用 while 循环,但我无法 return 进入菜单并保持所有输入和进度,而无需重新启动程序。到目前为止,这是我的代码;
import java.util.Scanner;
public class User2 {
private static Scanner in;
public static void main(String[] args) {
in = new Scanner(System.in);
int userChoice;
boolean quit = false;
String firstName = null;
String secondName = null;
String email = null;
String username = null;
String password = null;
do {
System.out.println("1. Create Account");
System.out.println("2. Login");
System.out.println("3. Quit");
userChoice = Integer.parseInt(in.nextLine());
switch (userChoice) {
case 1:
System.out.print("Enter your first name: ");
firstName = in.nextLine();
System.out.println("Enter your second name:");
secondName = in.nextLine();
System.out.println("Enter your email address:");
email = in.nextLine();
System.out.println("Enter chosen username:");
username = in.nextLine();
System.out.println("Enter chosen password:");
password = in.nextLine();
break;
case 2:
String enteredUsername;
String enteredPassword;
System.out.print("Enter Username:");
enteredUsername = in.nextLine();
System.out.print("Enter Password:");
enteredPassword = in.nextLine();
if (username != null && password != null
&& enteredUsername == username
&& enteredPassword == password)
System.out.println("Login Successfull!");
else
System.out.println("Login Failed!");
break;
case 3:
quit = true;
break;
default:
System.out.println("Wrong choice.");
}
System.out.println();
} while (!quit);
System.out.println("Bye!");
}
}
我试过 运行 你的代码,但它在创建帐户后不让我登录。仔细查看您比较用户名和密码的 if 语句,我注意到您正在使用 == 比较字符串
字符串通常是任何面向对象语言中的对象,因此在 java 中您将需要使用
enteredUsername.equals(username)
并对您要比较的任何其他字符串使用相同的方法。还有其他字符串比较方法,如果您查看字符串 class,您可以在 oracle 的 java 文档中找到有关它们的更多信息。对于您现在使用的代码,.equals 可能是您想要使用的代码。
不要使用 ==
进行字符串比较使用 String.equals
例如
enteredUsername.equals (username)
甚至
enteredUsername.equalsIgnoreCase (username)
无论输入文本大小写都进行比较
我正在寻找一种方法,在每个案例完成后 return 到 'menu',并且在选择退出时仅 exit/close 程序。我假设会使用 while 循环,但我无法 return 进入菜单并保持所有输入和进度,而无需重新启动程序。到目前为止,这是我的代码;
import java.util.Scanner;
public class User2 {
private static Scanner in;
public static void main(String[] args) {
in = new Scanner(System.in);
int userChoice;
boolean quit = false;
String firstName = null;
String secondName = null;
String email = null;
String username = null;
String password = null;
do {
System.out.println("1. Create Account");
System.out.println("2. Login");
System.out.println("3. Quit");
userChoice = Integer.parseInt(in.nextLine());
switch (userChoice) {
case 1:
System.out.print("Enter your first name: ");
firstName = in.nextLine();
System.out.println("Enter your second name:");
secondName = in.nextLine();
System.out.println("Enter your email address:");
email = in.nextLine();
System.out.println("Enter chosen username:");
username = in.nextLine();
System.out.println("Enter chosen password:");
password = in.nextLine();
break;
case 2:
String enteredUsername;
String enteredPassword;
System.out.print("Enter Username:");
enteredUsername = in.nextLine();
System.out.print("Enter Password:");
enteredPassword = in.nextLine();
if (username != null && password != null
&& enteredUsername == username
&& enteredPassword == password)
System.out.println("Login Successfull!");
else
System.out.println("Login Failed!");
break;
case 3:
quit = true;
break;
default:
System.out.println("Wrong choice.");
}
System.out.println();
} while (!quit);
System.out.println("Bye!");
}
}
我试过 运行 你的代码,但它在创建帐户后不让我登录。仔细查看您比较用户名和密码的 if 语句,我注意到您正在使用 == 比较字符串 字符串通常是任何面向对象语言中的对象,因此在 java 中您将需要使用
enteredUsername.equals(username)
并对您要比较的任何其他字符串使用相同的方法。还有其他字符串比较方法,如果您查看字符串 class,您可以在 oracle 的 java 文档中找到有关它们的更多信息。对于您现在使用的代码,.equals 可能是您想要使用的代码。
不要使用 ==
进行字符串比较使用 String.equals
例如
enteredUsername.equals (username)
甚至
enteredUsername.equalsIgnoreCase (username)
无论输入文本大小写都进行比较