今天是我学习java的第一天:)
我在运行一个非常简单的例子时遇到了问题(不是一个好的开始)。
这只是一个简单的示例,它要求用户输入并将其打印出来,但是当我尝试从控制台读取一行时,我得到一个空指针异常。
我不明白因为一切似乎都被实例化了。
public static void main(String[] args) {
// TODO code application logic here
Console console = System.console();
String userinput;
userinput= console.readLine("Enter input: ");
/* Creates list for planets */
ArrayList outputlist= new ArrayList();
outputlist.add(userinput); // Adds users input to the list
outputlist.add("an entry"); // Adds a string to the list
System.out.println("\nTwo items: " + outputlist);
}
编辑1
正如许多人指出的那样,当我尝试从控制台读取一行时因为控制台为空(即使我正在实例化它?)而抛出错误。
我觉得这有点傻,但我怎么能让控制台“不为空”。我认为我使用的是Console console = System.console()。
我对工作流程的期望是使用netbeans编写一个简单的用户输入。 点击调试按钮。 看到弹出的屏幕。 输入一些文字。 见输出。
编辑2
O.K
经过一番挖掘后,发现你无法在netbeans中使用system.console。 我不明白为什么。 我只是用户扫描仪。
现在我不确定接受o-0的答案
答案 0 :(得分:2)
必须是System.console()
。您没有对可能导致空指针异常的对象执行任何其他操作。正如@McDowell指出的那样,System.console()
可以返回空值
答案 1 :(得分:2)
Console console = System.console();
String userinput;
userinput= console.readLine("Enter input: ");
而不是使用以下代码;我认为System.console用于.Net平台
String userinput;
InputStreamReader sr =new InputStreamReader(System.in);
BufferReader br=new BufferReader(sr);
userinput=br.readLine();
答案 2 :(得分:1)
在终端(linux中的shell或windows中的cmd)中运行它。
就我而言,我把你的代码放在一个文件中(Test.java)。 构建之后,IDE(eclipse,在我的例子中)创建一个bin文件(Test.class)
所以,只需转到此文件夹并致电:
$ java Test
Enter input: asdasd
Two items: [asdasd, an entry]
并且有效!
答案 3 :(得分:0)
您没有检查任何结果值。因此,如果其中一个调用返回“null”,并且您尝试随后使用它,就好像它是一个对象的引用/指针,那就是NullPointerException的来源。
可能的罪魁祸首是System.console()和console.readLine()。
http://download.oracle.com/javase/6/docs/api/java/io/Console.html#readLine%28%29表示readLine可能返回null。 http://download.oracle.com/javase/6/docs/api/java/lang/System.html#console%28%29也表示此调用可能会返回null。 因此,在使用它们之前,最好先检查两种情况下返回的值。
(正如你应该做的那样,如果函数指定了这样的可能结果)。