我得到一个NullPointerException ....我找不到错误。请帮助我找出错误

时间:2015-02-06 21:02:30

标签: java

import java.io.Console;

public class ConcoleInjava {
    public static void main(String[] args) {

    Console c=System.console();

    System.out.println("enter ur passward :");

    char[]ch=c.readPassword();
    String pass=String.valueOf(ch);
    System.out.println(pass);
    }

}

5 个答案:

答案 0 :(得分:2)

未创建控制台对象,这就是您获得NPE的原因。

在第char[]ch=c.readPassword();

请参阅此处: - The Problem may be related to IDE or no console available

可能的解决方案: - Refer to this issue on SO

答案 1 :(得分:0)

我最好的猜测是在char[]ch=c.readPassword();处引发了NullPointerException,因为Console c对象没有值。 这意味着,您要求的对象的密码值等于null。

答案 2 :(得分:0)

如果您在Eclipse中运行程序,则无法获得控制台实例。

这是一个已知的日食错误。

https://bugs.eclipse.org/bugs/show_bug.cgi?id=122429

答案 3 :(得分:0)

由于您没有初始化字符数组,因此它给出了NullPointerException

import java.io.Console;
public class ConcoleInjava {
public static void main(String[] args) {
    Console c=System.console();
    System.out.println("enter ur passward :");
    char[]ch = new char[int];
    ch = c.readPassword();
    String pass=String.valueOf(ch);
    System.out.println(pass);
}

}

代替" [int]" (第6行)给出该数组的大小意味着你正在初始化数组。所以你不会得到空指针异常。

答案 4 :(得分:0)

如果c.readPassword(); null,方法调用end of stream is会返回reached。流结束意味着在某种意义上不再需要读取字符。您可能需要对此进行更多研究才能从java oracle文档中获得完全清晰。