Как сравнить логические значения в операторе If с выходной Java - PullRequest
0 голосов
/ 04 мая 2018

Я создаю Java-программу для сравнения временных имен пользователей и паролей. Мне нужно, чтобы пользователь знал, скорее, он получил имя пользователя и пароль правильно или нет. Если «checkFinal» имеет значение true, его нужно распечатать Добро пожаловать, иначе распечатайте неверную информацию. Почему-то я не могу заставить его сравнивать булевы по какой-то причине. Мне нужно, чтобы это тоже было другим способом. Я также открыт для упрощения программы. Вся помощь приветствуется. Заранее спасибо.

import java.util.Scanner;
public class program {
private static Scanner a;
private static String  inputusername;
private static Scanner b;
private static String  inputpassword;
private static String  validusername;
private static String  validpassword;
public static void main(String[] args) {
    compile();
}
public static void greeting() {
    System.out.println("Hello!");
    System.out.println("Note: All Things Are Case Sensitive!");
}
public static String questiona() {
    System.out.println("What Is Your Username?");
    a = new Scanner(System.in);
    inputusername = a.next();
    return inputusername;
}
public static String questionb() {
    System.out.println("What Is Your Password?");
    b = new Scanner(System.in);
    inputpassword = b.next();
    return inputpassword;
}
public static String username() {
    validusername = "username";
    return validusername;
}
public static String password() {
    validpassword = "password";
    return validusername;
}
private static boolean checkOne(String validusername, String inputusername) {
    boolean usernamecheck = false;
    if (validusername == inputusername) {
        usernamecheck = true;
    }
    return usernamecheck;
}
private static boolean checkTwo(String validpassword, String inputpassword) {
    boolean passwordcheck = false;
    if (validpassword == inputpassword) {
        passwordcheck = true;
    }
    return passwordcheck;
}
private static boolean checkFinal(boolean usernamecheck, boolean passwordcheck) {
    boolean checkFinal = false;
    if (usernamecheck == true && passwordcheck == true) {
        checkFinal = true;
    } else {
        checkFinal = false;
    }
    return checkFinal;
}
public static void compile() {
    greeting();
    questiona();
    questionb();
    boolean usernamecheck = checkOne(validusername, inputusername);
    boolean passwordcheck = checkTwo(validpassword, inputpassword);
    checkFinal(usernamecheck, passwordcheck);
}
}

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Было немного мест для обновления. Вот обновленный код. Я положил печать истина / ложь в конце на основе результата проверки.

import java.util.Scanner;
public class Password {
    private static Scanner a;
    private static String  inputusername;
    private static Scanner b;
    private static String  inputpassword;
    private static String  validusername;
    private static String  validpassword;
    public static void main(String[] args) {
        compile();
    }
    public static void greeting() {
        System.out.println("Hello!");
        System.out.println("Note: All Things Are Case Sensitive!");
    }
    public static String questiona() {
        System.out.println("What Is Your Username?");
        a = new Scanner(System.in);
        inputusername = a.next();
        return inputusername;
    }
    public static String questionb() {
        System.out.println("What Is Your Password?");
        b = new Scanner(System.in);
        inputpassword = b.next();
        return inputpassword;
    }
    public static String username() {
        validusername = "username";
        return validusername;
    }
    public static String password() {
        validpassword = "password";
        return validpassword;
    }
    private static boolean checkOne(String validusername, String inputusername) {
        boolean usernamecheck = false;
        if (username().equals(inputusername)) {
            usernamecheck = true;
        }
        return usernamecheck;
    }
    private static boolean checkTwo(String validpassword, String inputpassword) {
        boolean passwordcheck = false;
        if (password().equals(inputpassword)) {
            passwordcheck = true;
        }
        return passwordcheck;
    }
    private static boolean checkFinal(boolean usernamecheck, boolean passwordcheck) {
        boolean checkFinal = false;
        if (usernamecheck && passwordcheck) {
            checkFinal = true;
        } else {
            checkFinal = false;
        }
        return checkFinal;
    }
    public static void compile() {
        greeting();
        questiona();
        questionb();
        boolean usernamecheck = checkOne(validusername, inputusername);
        //System.out.println(usernamecheck);
        boolean passwordcheck = checkTwo(validpassword, inputpassword);
        //System.out.println(passwordcheck);
        System.out.println(checkFinal(usernamecheck, passwordcheck));
    }
}
0 голосов
/ 04 мая 2018

Вам нужно использовать equals () для сравнения двух строк. И не нужно проверять на usernamecheck = true. Смотрите пример кода ниже и измените соответственно. Это будет работать.

    if (validpassword.equals(inputpassword)) {
            passwordcheck = true;
        }
 ...
 if (usernamecheck  && passwordcheck) {
        checkFinal = true;
    } else {
     ..
}
...