Я изучаю Java и написал простую программу входа, чтобы проверить, что я могу использовать то, что я узнал правильно, до сих пор у меня есть имена пользователей и пароли, хранящиеся как отдельные переменные. Я решил использовать оператор switch для хранения имен пользователей и паролей и назначения их на основе идентификатора пользователя, который вводит пользователь. Это кодпрограмма, кажется, пропустит раздел инструкции if, переместившись в инструкцию else, прежде чем вернуться в нужное место.
import java.util.Scanner;
public class Login {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int user_attempt = 0;
int pass_attempt = 3;
Boolean LoginSuccessful;
String user_name = null;
String pass = null;
System.out.println("Enter your user ID: ");
int user = input.nextInt();
switch (user){
case 1: user_name = "lucas";
pass = "password";
break;
case 2: user_name = "dave";
pass = "password2";
break;
default: System.out.println("User ID not valid");
}
while(user_attempt < 5){
System.out.println("Enter your username: ");
String username = input.nextLine();
if (username.equals(user_name)){
while(pass_attempt > 0){
System.out.println("Enter your password: ");
String password = input.nextLine();
if(password.equals(pass)){
System.out.println("Login Sucessful");
LoginSuccessful = true;
break;
}
else{
pass_attempt--;
System.out.println("Incorrect password, attempts remaining " + pass_attempt);
}
}
break;
}
else{
System.out.println("Username is not valid!");
user_attempt++;
}
}
if(LoginSuccessful = true){
System.out.println(" ");
}
else{
System.out.println("Login Failed.");
}
}
}
Все, кажется, работает нормально, за исключением, когда я запускаю программу и введите идентификатор пользователя, я получаю эту
Введите идентификатор пользователя: Введите имя пользователя : Имя пользователя недействительно! Введите имя пользователя:
вместо
Введите идентификатор пользователя: Введите имя пользователя:
Я не могу понять, почему это происходит, как функции программы, как правило, с этого момента, позволяя я вводим имя пользователя и пароль и выполняя правильные функции, если они верны/неправильны. Любая помощь с этим будет оценена!
Спасибо, что работали и теперь программа работает так, как я хотел, чтобы это – lucasRHCP
На самом деле я думаю, что это только исправили проблему, а не фиксированной он, если я сделаю какие-либо изменения в коде, тогда, когда я запустил его, проблема вернется. – lucasRHCP
@lucasRHCP - Ну, если вы хотите исправить это, используйте 'Integer.parseInt (scanner.nextLine())', а затем удалите * дополнительную * 'nextLine()'. Это исправит * правильно *. Остерегайтесь 'NumberFormatException', хотя :) – TheLostMind