****它抛出的JOptionPane代码的NullPointerException如下。****的NullPointerException在的JOptionPane
public static void main(String[]args){
String[] options={"Do it again?", "Exit"};
int response=0;
int indexOfZip;
do{
try{
String dataStr=JOptionPane.showInputDialog("Enter a zip code");
if(dataStr!=null){
while (k<i){
if (place[k].equals(dataStr)){
indexOfZip=k;
k++;
}
}
int data=Integer.parseInt(dataStr);
response=JOptionPane.showOptionDialog(null,
"You asked me to search for zip code:"+dataStr+"The zip code "+dataStr+" belongs to"+place[k].getTown()+","+place[k].getState()+"Do you want me to search again?",
"results",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
options,options[0]);
System.out.println("You asked me to search for zip code:"+dataStr);
System.out.println("The zip code "+dataStr+" belongs to"+place[k].getTown()+","+place[k].getState());
System.out.println("Do you want me to search again?");
}
}catch(NumberFormatException e){
JOptionPane.showMessageDialog(null,"Bad Numeric String, try again.", "Input Error",JOptionPane.ERROR_MESSAGE);
}
}while(response==0);
if (response!=0){
System.out.print("No");
System.out.println("Good Bye!");
}
}
终端说,例外是该行 响应= JOptionPane.showOptionDialog(NULL,
但我看不出这里有什么问题,因为“应答”之前进行初始化。
什么是'place = [k]'?它是否为空?如果不是,它的字段是否为空?发布完整的堆栈跟踪并仔细检查您是否正在查看正确的涉及的行。在**涉及的行之前进行空测试**以查看哪些为null,然后找出原因。 –
@PavelUvarov对不起,我是新来的代码。我应该在哪里申报indexOfZip? – ksdawq
这取决于事实 - 你在哪里使用它。现在它没有用法,所以这个变量可以简单地省略。但根据其他消息来源,我发现一些变量没有被声明,但被使用。例如 - '我'。通常的方式来决定你应该把变量放在哪里 - 决定着两种可见性特征 - 它应该是不够的,但不能超过要求。此外,代码样式定义方法不建议大于10-12行。并且不建议在方法中使用两层以上的嵌套块。我建议你阅读一些代码样式。 –