在每个 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)

无论输入文本大小写都进行比较