由于Scanner类输入是可见的,故Scanner类不适用于从控制台读取密码。从Java se 6开始加入了Console类来解决此问题。
要想读取账号密码,可以参考以下代码:
public class Test_Console {
publicstatic void main(String[] args) {
Consolec = System.console();
Stringusername = c.readLine("User name:");
c.printf("user:"+username+"\n");
char []passwd =c.readPassword("Password:");
c.printf(String.valueOf(passwd));
}
}
但是怎么运行这段代码呢,直接运行?
Exception in thread "main" java.lang.NullPointerException
at test_char.Test_Console.main(Test_Console.java:9)
顾名思义,这个类是从控制台获取账号密码的,所以打开dos命令窗,编译并执行相应代码。
反复找.Java文件太麻烦?
在Test_Console.java相同目录下,右键-记事本,将以下内容写在记事本里。
javac Test_Console.java
java Test_Console
pause
保存,文件名后缀为.bat,双击执行。输入账号密码-回车
就可以打印出账号密码啦,只是密码输入时是不可见的。
同时要注意,在主类里面不能有package,否则会出现主类无法加载的情况。