有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么字符串密码的输入在另一个类中使用时返回null

循环do-while是一个循环,应该至少运行一次,然后记录来自该{ }内部的所有代码输出。do while for me的情况不是有效的输入,不会运行实际的输入,并且会输出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();
     } 
}

我已经尝试过重新设置类的类型,并设置password=ag

输出:

输入密码:1234

1234

失效无效

输入密码:1234

1234

失效无效

输入密码:


共 (1) 个答案

  1. # 1 楼答案

    您正在将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();

    `