Программа продолжается, когда она должна сломаться

Я создаю программу, которая просит пользователей ввести имя пользователя и пароль, проверяет, совпадает ли он с одним из трех наборов имен пользователей и паролей, которые у меня есть, и продолжает программу, если это так. Если он не соответствует ни одному из наборов, он должен попросить пользователя снова ввести имя пользователя и пароль. После трех попыток он должен выйти из программы. Прямо сейчас, независимо от того, что я ввожу в качестве имени пользователя и пароля, это продолжится со следующей части программы. Вот основной код:

int y = 0;
do {
    String user = user(scan);
    String pass = pass(scan);
    boolean b = check(user, pass);
    if (b = false) {
        y+=1;
    } 
    if (y == 3) {
        System.out.println("Too many incorrect tries");
        break;
    }
} while (y != 0);

Вот метод пользователя:

public static String user(Scanner scan) {
    System.out.print("Enter your username: ");
    String username = cipher(scan.nextLine(), 5);
    return username;
}

Вот метод передачи:

public static String pass(Scanner scan) {
    System.out.print("Enter your password: ");
    String pass = cipher(scan.nextLine(), 5);
    return pass;
}

Вот метод проверки:

public static boolean check(String username, String password) {
    boolean valid = false;
    if (username.equals("Ofhp") && password.equals("ofhpnsjq8")) {
        valid = true;
    } else if (username.equals("Fqnhnf") && password.equals("nqtajofhp79")){
        valid = true;
    } else if (username.equals("Idqfs") && password.equals("hmzggdgzssd")) {
        valid = true;
    } else {
        valid = false;
    }
    return valid;
}

Одна проблема, которую я вижу, - это использовать b == false вместо b = false в условии, если внутри цикла do while

vinay chhabra 26.10.2018 04:29

Также используйте System.exit () вместо break

vinay chhabra 26.10.2018 04:31

@vinay нет, если после этого цикла есть код

OneCricketeer 26.10.2018 04:53
0
3
35
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Здесь вам может понадобиться двойной знак равенства:

if (b = false) {
    y+=1;
}

Обновлено: или просто

if(!b) {

Другие вопросы по теме