eclipse中使用console报错java.lang.NullPointerException

最近博主想重新学习一下Java,其中在学习Console使用时发现了问题。代码如下,十分简单:

import java.io.Console;
public class InputOutput {
	public static void main(String[] args) {
		Console cons=System.console();
		String name=cons.readLine("username:");
		char[] pwd=cons.readPassword("password:");
		System.out.println("name"+name+"pwd"+pwd.toString());
	}
}

但是不可思议的是这么几行代码运行竟然会有问题,问题如下:
在这里插入图片描述出错代码如下:
String name=cons.readLine("username:");
也就是说这里出现了空指针,问题应该出现在cons这个对象上,打印发现cons果然为null:
在这里插入图片描述觉得事情不太对劲,去查看了下API手册:
在这里插入图片描述红框中的意思简单来说就是System.console()方法与虚拟机是否具有控制台有关系,如果有,那么就可以使用,没有则该方法返回null。

那么为什么eclipse上不可以运行呢?
因为eclipse将应用程序作为后台进程运行,而不是作为带有系统控制台的顶级进程运行。也就是说System.console()在eclipse的机制下只会返回null,而在IDEA环境下可以正常运行。

替代console的方法

public class ReadingDemo {

public static void main(String[] args) {

    // ====  BufferedReader
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    System.out.print("Please enter user name : ");
    String username = null;
    try {
        username = reader.readLine();
    } catch (IOException e) {
        e.printStackTrace();
    }
    System.out.println("You entered : " + username);
    // ===== In Java 5, Java.util,Scanner is used for this purpose.
    Scanner in = new Scanner(System.in);
    System.out.print("Please enter user name : ");
    username = in.nextLine();      
    System.out.println("You entered : " + username);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值