#java #if-statement #authentication
#java #if-оператор #аутентификация
Вопрос:
При запуске приведенной ниже программы я думаю, что она должна вывести «Аутентификация прошла успешно», если я введу «john smith» в качестве имени пользователя и «12345» в качестве идентификатора пользователя, но вместо этого он просто возвращается с сообщением «Ошибка аутентификации». Я вызываю этот метод в основном классе. Есть какие-нибудь предложения?
package com.company;
import java.util.Scanner;
public class Account {
public String userNameInput;
public String userIDInput;
public String userName = "john smith";
public String userID = "12345";
public void userDetails(){
Scanner userInput = new Scanner(System.in);
System.out.println("Please enter user name:");
userNameInput = userInput.next().toLowerCase();
System.out.println("Please enter user ID:");
userIDInput = userInput.next();
if(userNameInput.equals(userName) amp;amp; userIDInput.equals(userID)){
System.out.println("Authentication successful");
} else{
System.out.println("Authentication failed!!");
}
}
}
Комментарии:
1. Попробуйте отладить его самостоятельно, чтобы увидеть, что делает ваша программа. Начните с печати ваших переменных
userNameInput
иuserIDInput
после их чтения (или, если вы знаете, как использовать отладчик, отладьте его таким образом). Содержат ли они ожидаемое содержание?2.
userInput.next()
будет считывать только один токен за раз. Итак, первый будет читатьjohn
, второй будет читатьsmith
.3. Спасибо, изменение userInput.next() на userInput.nextLine() сработало
Ответ №1:
Изменить next()
на nextLine()
in userNameInput = userInput.nextLine().toLowerCase();
package com.company;
import java.util.Scanner;
public class Account {
public String userNameInput;
public String userIDInput;
public String userName = "john smith";
public String userID = "12345";
public void userDetails(){
Scanner userInput = new Scanner(System.in);
System.out.println("Please enter user name:");
userNameInput = userInput.nextLine().toLowerCase();
System.out.println("Please enter user ID:");
userIDInput = userInput.next();
if(userNameInput.equals(userName) amp;amp; userIDInput.equals(userID)){
System.out.println("Authentication successful");
} else{
System.out.println("Authentication failed!!");
}
}
}
Комментарии:
1. Всегда используйте sysout() или попробуйте отладку. Это вам очень поможет.