我有一个数组列表方法,我需要将其更改为linkedlist方法。它在int x线上抛出了一个nullpointerexception
。它正在抛出另一行的另一个空指针异常。但该行是调用该方法的位置。下面是代码:
Exception in thread "main" java.lang.NullPointerException
at PlantList.analyzePlants(PlantList.java:303)
at PlantList.main(PlantList.java:434)
private void analyzePlants() {
String text = "";
Node p = root;
while(p!=null) {
text = JOptionPane.showInputDialog(null,"Enter the string to analyze: " );
int x = analyze(p.plant.getName().toLowerCase(), analyzeText.getText().toLowerCase());
text += p.plant.getName() + " : " + x + "n";
p =p.next;
}
JTextArea textArea = new JTextArea(text);
JScrollPane scrollPane = new JScrollPane(textArea);
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
scrollPane.setPreferredSize(new Dimension(150, 300));
JOptionPane.showMessageDialog(null, scrollPane, "Analyzation Completed", JOptionPane.CANCEL_OPTION);
analyzeText.setText("");
p = p.next;
}
/**
* Recursive function to analyze the plants in the system.
*/
private int analyze(String name, String text) {
if (!name.contains(text)) {
return 0;
}
if (name.startsWith(text)) {
return 1 + analyze(name.substring(1), text);
} else {
return 0 + analyze(name.substring(1), text);
}
}
它在 int x 行抛出一个空指针异常
p.plant
、p.plant.getName()
、analyzeText
或analyzeText.getText()
都是空的。
已更新 在对分析文本调用任何方法之前,请执行空检查。 例如
String param1 = p.plant.getName().toLowerCase()
String param2 = "";//you can also initialize to null
if(analyzeText != null && analyzeText.getText() != null) {param2 = analyzeText.getText().toLowerCase()}
int x = analyze(param1, param2);