java中的Console类

再用idea时遇到了下面的错误:

  boolean success = false;
        int count = 0;
        Console cons;
        char [] passWd;
        cons = System.console();
        while (true) {
            System.out.print("请输入密码\n");
            passWd = cons.readPassword();
            count++;
            String passworld = new String(passWd);
            if (passworld.equals("I love this game")) {
                success = true;
                System.out.println("第" + count + "次密码正确");
                break;
            } else
                System.out.println("第" + count + "次密码" + passworld + "不正确");
            if (count == 3) {
                System.out.println("您" + count + "次输入的密码都不正确");
                System.exit(0);
            }
        }
        if (success)
            System.out.println("你好,欢迎你!");

在这里插入图片描述
代码本身没有问题,但一直报这个错误
查了查原因
如果Java程序要与windows下的cmd或者Linux下的Terminal交互,就可以使用这个Java Console类代劳。Java要与Console进行交互,不总是能得到可用的Java Console类的。一个JVM是否有可用的Console,依赖于底层平台和JVM如何被调用。如果JVM是在交互式命令行(比如Windows的cmd)中启动的,并且输入输出没有重定向到另外的地方,那么就可以得到一个可用的Console实例。
  但当使用Eclipse等IDE运行以上代码时Console中将会为null。
  表示Java程序无法获得Console实例,是因为JVM不是在命令行中被调用的,或者输入输出被重定向了。在Eclipse诸如类似的IDE工具中运行Console类。如果没有对Console实例判空操作,结果使用了该实例会抛出java.lang.NullPointerException异常。
只好去控制台运行这个代码
至于在idea上如何解决这个问题找了半天都没有答案。

发布了73 篇原创文章 · 获赞 81 · 访问量 9997

猜你喜欢

转载自blog.csdn.net/qq_41910353/article/details/101717582