使用’if’语句检查后出现空指针exception

我收到一个非常烦人的错误,说我得到一个空指针exception但是有一个if语句在继续之前检查文本是否为null:

public String[] getFileData() throws IOException { String file_name = "C:/Users/Liloka/Source/textfiles/Lines.txt"; try { ReadFile file = new ReadFile(file_name); aryLines = file.OpenFile(); for(int i =0; i<aryLines.length; i++) { System.out.println(aryLines[i]); } } catch(IOException e) { System.out.println(e.getMessage()); } return aryLines; } public void actionPerformed(ActionEvent evt) { if(evt.getSource() == enterBtn) { String Text = textToAdd.getText(); if(!(Text.equals(null))) { RF.addNewElement(Text); System.out.println(Text); try { RF.writeToFile(); getFileData(); } catch(Exception e) { } } else JOptionPane.showMessageDialog(null, "Please enter a word!"); } } 

他们甚至认为’其他’的唯一一次是通过这个:

  if(Text.equals(null)); 

我也尝试过:

  if(Text != null)); 

这在过去对我有用但现在不行! 其他课程是:

 public String[] OpenFile() throws IOException { FileReader fr = new FileReader(path); BufferedReader br = new BufferedReader(fr); int numberOfLines = readLines(); textData = new String[numberOfLines]; int i; for(i=0; i<numberOfLines; i++) { textData[i] = br.readLine(); } br.close(); return textData; } int readLines() throws IOException { FileReader file_to_read = new FileReader(path); BufferedReader bf = new BufferedReader(file_to_read); String aLine; numberOfLines=0; while((aLine = bf.readLine()) != null) { numberOfLines++; } //numberOfLines++; bf.close(); return numberOfLines; } public void addNewElement(String newElement) { String texticles = newElement; numberOfLines = numberOfLines++; textData[numberOfLines] = texticles; //numberOfLines++; //Increments numberOfLines for the next element to be added } public void writeToFile() throws IOException { FileWriter fstream = new FileWriter(path); BufferedWriter outFile = new BufferedWriter(fstream); //numberOfLines++; outFile.write(textData[numberOfLines]); //outFile.write(","); outFile.write("\r\n"); outFile.close(); } 

再次感谢你!

错误:

 Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at textfiles.JListExample.actionPerformed(JListExample.java:115) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) 

当我输入或不输入内容并按下回车键时,我收到错误。

这是错误

 if(Text != null) Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at textfiles.JListExample.actionPerformed(JListExample.java:115) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$000(Unknown Source) at java.awt.EventQueue$1.run(Unknown Source) at java.awt.EventQueue$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$2.run(Unknown Source) at java.awt.EventQueue$2.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) 

  if(Text.equals(null)); 

每次Text为null时,上面都会抛出NullPointerException。 任何时候你使用“。” operator on null你得到一个NullPointerException。

如果你在if之后得到一个NPE (Text!= null) ,请发布堆栈跟踪。

我的猜测是textToAddRF为null。

如果textToAdd是一个JTextComponent (或子类,但我在这里猜测),那么它的getText()方法不能返回null。 因此, Text不能为null,如此测试所示。

 package test; import javax.swing.JFrame; import javax.swing.JTextField; public class TextComponentTest extends JFrame { JTextField tf; public TextComponentTest() { super(); tf = new JTextField(); getContentPane().add(tf); } public static void main(String[] args) { TextComponentTest test = new TextComponentTest(); test.setVisible(true); String s = test.tf.getText(); System.out.println(">" + s + "<"); System.out.println(">" + s.length() + "<"); test.tf.setText(null); s = test.tf.getText(); System.out.println(">" + s + "<"); System.out.println(">" + s.length() + "<"); } } 

输出是:

 >< >0< >< >0<