****它拋出的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行。並且不建議在方法中使用兩層以上的嵌套塊。我建議你閱讀一些代碼樣式。 –