Chinaunix首页 | 论坛 | 博客
  • 博客访问: 48439
  • 博文数量: 7
  • 博客积分: 169
  • 博客等级: 入伍新兵
  • 技术积分: 85
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-23 18:20
文章分类

全部博文(7)

文章存档

2012年(7)

我的朋友

分类: Java

2012-11-01 22:16:33

【java代码】

点击(此处)折叠或打开

  1. Console cons = System.console();
  2.         String username = "mike";
  3.         username = cons.readLine("User name: ");
  4.         char[] passwd = cons.readPassword("Password:");
  5.         System.out.println("your user name is:"+username+". your password is:"+passwd.toString());

错误:Exception in thread "main" java.lang.NullPointerException
          at rbsrcy.Main.main(Main.java:54)


原因
如果你的Java程序要与Windows下的cmd或者Linux下的Terminal交互,就可以用这个Java Console类代劳。

Java 要与Console进行交互,不总是能得到可用的Java Console类的。一个JVM是否有可用的Console,依赖于底层平台和JVM如何被调用。如果JVM是在交互式命令行(比如Windows的 cmd)中启动的,并且输入输出没有重定向到另外的地方,那么就我们可以得到一个可用的Console实例。

当你有Eclipse或NetBean中运行以上代码时Console中将会有以下文字输出:

Console is unavailable.

表示Java程序无法获得Console实例,是因为JVM不是在命令行中被调用的,或者输入输出被重定向了。
在Eclipse诸如类似的IDE工具中运行Console类。如果没有对Console实例判空操作,结果使用了该实例会抛出java.lang.NullPointerException异常

建议:

点击(此处)折叠或打开

  1. public class Test{
  2. public static void main(String args[]){
  3. //测试一下是否为空,如果为空就返回,如果不为空进行循环输出
  4.   Console console=System.console();
  5.   if(console==null){
  6.    System.out.println("不能使用控制台");
  7.                        return;
  8.   }
  9.     while(true){
  10.      String str=System.console().readLine();
  11.      System.out.println(str);
  12.     }
  13.    }
  14. }



阅读(3606) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~