在java can';我看不出是什么';开关怎么了
我得到了一段简单的代码,它调用另一个类中返回字符串值的方法。我的程序一直到showinput框,我输入搜索词,然后愚蠢的空指针在我脸上到处都是。我在这里发号施令,不知道该怎么办。这是第三个案例,我快死了。我得到的只是java.lang.nullpointerexeption在java can';我看不出是什么';开关怎么了,java,nullpointerexception,switch-statement,Java,Nullpointerexception,Switch Statement,我得到了一段简单的代码,它调用另一个类中返回字符串值的方法。我的程序一直到showinput框,我输入搜索词,然后愚蠢的空指针在我脸上到处都是。我在这里发号施令,不知道该怎么办。这是第三个案例,我快死了。我得到的只是java.lang.nullpointerexeption String s = JOptionPane.showInputDialog( menu); try { int i = Integer.parseInt(s);
String s = JOptionPane.showInputDialog( menu);
try
{
int i = Integer.parseInt(s);
switch(i)
{
case 1:
f = new BasicFile();
FileOpen = true;
//BasicFile.Backup(f);
display(f.getContents());
break;
case 2:
if (FileOpen == true){
display(f.getLines(), (f.getWords() - f.getNumber()), f.getChars(), f.getNumber());
}
else
display("Must open file first", "ERROR");
break;
case 3:
if (FileOpen == true){
String key = input();
display(f.Search(key));
}
else
display("Must open file first", "ERROR");
break;
case 4:
done = true;
break;
default:
display("This option is underfined", "Error");
break;
}
}
catch(NumberFormatException | NullPointerException | IOException e)
{
display(e.toString(), "Error");
}
}
空引用有四种可能
1. FileOpen - might be null
2. input() - might throw null
3. f - might be null
4. display() - might throw null
一步一步地检查抛出npe的是什么,您可以在调试器中简单地执行此操作。无论何时获得npe,您都需要仔细研究抛出npe的行。那是哪一行呢?在使用f之前,您是否先检查f是否为空?您是否介意先注释一下您的try catch块,然后与我们共享它将生成的堆栈跟踪?
f
在case:1
中设置,但在case:3
中使用-是否为null
?注意:编写代码时请使用;方法应该在较低的CAME
-尤其是因为不这样做会破坏so的语法hilighting。@BoristheSpider让我们在推测之前等待stacktrace…所有案例都检查文件是在案例1上设置的还是没有执行。但我不能注释try-catch块,编译器向我抛出了无数io实例。因为另一个类中的方法正在抛出它们。