Java IO控制台
我正在为我的USB登录工作。我知道还有其他语言做得更好,但我正在学习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 (
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不用担心。将此问题标记为已回答:)