Почему ввод строкового пароля возвращает ноль при использовании в другом классе - PullRequest
0 голосов
/ 18 октября 2019

Цикл do-while - это цикл, который должен запускаться хотя бы один раз, а затем регистрировать весь вывод кода изнутри этого { }. Случай do-while для меня не является допустимым вводом и не запустил бы фактический ввод и вывел бы NULL.

import java.util.Scanner;

import static java.lang.System.*;
class PasswordCheck
{
    public String password;
    public String ag;
    public void PasswordCheck()
    {
        do {
            password = ag;
            if(password == "1234") {
                System.out.println("success");
            }else {
                System.out.println("FAIL" + password);
                PasswordCheck d = new PasswordCheck();
                d.check();
            }
        } while (password != "1234");
        if(password == "1234") {
            System.out.println("success");
        }
    }
    public void check()
    {
        Scanner keyboard = new Scanner(System.in);
        System.out.print("Enter the password:");
        String ag = keyboard.next();
        System.out.println(ag); 
        PasswordCheck as = new PasswordCheck();
        as.PasswordCheck();
    }
}
public class PassRunner
{
    public static void main( String args[] )
    {
        PasswordCheck test = new PasswordCheck();
        test.check();
     } 
}

Я уже пытался повторно указать тип класса, а также пароль = ag;

Вывод:

Введите пароль: 1234

1234

FAILnull

Введите пароль: 1234

1234

FAILnull

Введите пароль:

1 Ответ

1 голос
/ 18 октября 2019

Вы назначаете ag на password. Оба они не инициализированы, поэтому имеют значение по умолчанию null. Вы должны инициализировать свой пароль с некоторым значением перед оператором if.

public void check()
{
    Scanner keyboard = new Scanner(System.in);
    System.out.print("Enter the password:");
    String ag = keyboard.next();
    System.out.println(ag); 
    PasswordCheck as = new PasswordCheck();
    as.PasswordCheck();
}

Это потому, что, как указано выше, блок не использует ag в качестве переменной экземпляра, вместо этого вы объявляете его как локальную переменную. Измените

`String ag = keyboard.next ();

на это;

ag = keyboard.next();

`

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...