Я пытаюсь сделать так, чтобы, если имя пользователя и/или пароль неверны, программа запустит его снова, вместо того, чтобы просто выполнять команду print в инструкции else. Я попробовал поместить другой цикл while в инструкцию else и вставить инструкцию if внутри, которая проверяет имя пользователя и пароль внутри нее, но потом я понял, что мне придется скопировать весь код из инструкции if в оператор else, что, очевидно, кажется как будто это не правильное решение и, вероятно, очень неуклюже. Каков правильный способ вернуть программу с самого начала или что-то еще?Перезапуск моей программы в Java
// Declare Variables
Scanner input = new Scanner(System.in);
String username;
String password;
String calculator = "calculator";
String renameUser = "renameUser";
String renamePass = "renamePass";
String getIp = "getIp";
String exit = "exit";
String command;
// Prompt User to login
System.out.println("Username: ");
username = input.nextLine();
System.out.println("Password: ");
password = input.nextLine();
if (username.equals("admin") && password.equals("admin")) // Must use the equals method of string class to compare, == operator will NOT work.
{
System.out.println("Success! Welcome " + username + "!");
while (true) // Infinite loop using the true statement
{ command = input.nextLine();
if (command.equals(calculator))
{ // calculator code here
if (command.equals(renameUser))
{ // renameUser code here
if (command.equals(renamePass))
{ // renamePass code here
if (command.equals(getIp))
{ // getIp code here
if(command.equals(exit))
{
break;
}
System.out.println("Logging out!");
}
}
}
}
}
}
else
{
System.out.println("Wrong username or password, please try again.");
}
}
}
Выполнение if/else instea d вложенных ifs. Это неправильная логика. Кроме того, используйте equalsIgnoreCase() для нечувствительного к регистру – Li357
@AndrewL. Я не понимаю, я использую вложенные ifs, потому что каждый из них имеет определенную функцию, если она вызвана. –
Вложенные ifs проверяют, являются ли ВСЕ условия истинными. – Li357