Java IO控制台

Java IO控制台,java,Java,我正在为我的USB登录工作。我知道还有其他语言做得更好,但我正在学习Java。我使用IO控制台时出错 package access; import java.awt.Desktop; import java.io.*; public class access { public static void main(String[] args)throws IOException { BufferedReader reader = new BufferedReader (

我正在为我的USB登录工作。我知道还有其他语言做得更好,但我正在学习Java。我使用IO控制台时出错

package access;
import java.awt.Desktop;
import java.io.*;


public class access {

    public static void main(String[] args)throws IOException {
        BufferedReader reader = new BufferedReader (new InputStreamReader (System.in));
        
        Console c = System.console();
         
        Desktop desktop = Desktop.getDesktop();
        File dirToOpen = null;
        
        
        String user = c.readLine("Username: ");
        
        char pass[] = c.readPassword("Enter password: ");
        String uPass = new String(pass);

             
        
        if(user.equals("yuto") && uPass.equals("abascalesgay")) {
            
            try {
                dirToOpen = new File("E:\\encrypted");
                desktop.open(dirToOpen);
            }
            
            catch (IllegalArgumentException iae) {
                System.out.println("File Not Found");
            }
                
            }
        else {
            System.out.println("Credenciales no válidas we, vuelve a intentarlo.");
        }
    }

}
错误日志

线程“main”java.lang.NullPointerException中的异常位于 access.access.main(access.java:17)


如果要将此代码添加到程序中:

if(c == null)
        {
            System.out.print("No console available");
            return;
        }
您将检查您的行
Console c=System.Console()返回NULL或not

目前它返回NULL,因为找不到控制台,其余代码无法编译

如果您是通过某个IDE运行您的程序-它将无法工作,因为IDE不是控制台

  • 转到“cmd.exe”
  • 键入“cd”-点击回车键
  • 现在输入“java”-点击回车键
  • 从System.in创建您自己的BufferedReader对象的另一种替代方法是使用
    java.util.Scanner
    如下所示:

    import java.util.Scanner;
    
    Scanner in;
    in = new Scanner(System.in);
    
    String s = in.nextLine();
    
    另外,如果您想使用
    System.console()
    ,则不应使用
    char pass[]
    获取密码,而应通过以下方式获取密码:

        String username = console.readLine("Username: ");
        String password = new String(console.readPassword("Password: "));
    

    请告诉第17行错误来自何处根据,您将看到该方法
    console()
    返回:系统控制台,如果有,否则为null.String user,并且知道我在第22行-->char pass[]上得到了相同的错误我的意思是,我明白你的意思,但问题是,当我输入密码时,我不希望字符可见,这就是为什么我使用IO控制台,但现在我在char pass上得到相同的错误[]你是通过控制台还是在IDE中启动程序?@Khandaiyal我会在一秒钟内编辑我的帖子,因为它不应该是char pass[]别介意,伙计,谢谢!!!!我正在使用Git bash控制台运行-jar,我试着使用windows cmd并运行它。@Khandaiyal不用担心。将此问题标记为已回答:)