使用'if'语句检查后,空指针异常 [英] Null Pointer Exception after checking with 'if' statement

查看:157
本文介绍了使用'if'语句检查后,空指针异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在得到一个非常烦人的错误,说我得到一个空指针异常,但是在继续之前,有一个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(); (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(异常e)
{

}
}
其他JOptionPane.showMessageDialog(null,请输入一个字! );
}

}

'else'通过这个:

  if(Text.equals(null)); 

我也尝试过:

  if(Text!= null)); 

这在过去一直为我工作,但现在不行!其他类是:

  public String [] OpenFile()throws IOException 
{
FileReader fr = new的FileReader(路径);
BufferedReader br = new BufferedReader(fr);

int numberOfLines = readLines();
textData = new String [numberOfLines];
int i; (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 ++; //增加numberOfLines为要添加的下一个元素
}

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\\\
);

outFile.close();
}

再次谢谢!



错误:

 线程中的异常AWT-EventQueue-0java.lang.NullPointerException 
at textfiles.JListExample.actionPerformed(JListExample.java:115)
在javax.swing.AbstractButton.fireActionPerformed(未知来源)

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



这是

的错误

  if(Text!= null)

线程AWT-EventQueue-0中的异常java.lang.NullPointerException
在textfiles.JListExample.actionPerformed(JListExample.java:115)
在javax.swing.AbstractButton.fireActionPerformed(未知源)
在javax.swing.AbstractButton $ Handler.actionPerformed(未知来源)
在javax.swing.DefaultButtonModel.fireActionPerformed(未知源)
在javax.swing.DefaultButtonModel.setPressed(未知源)
在javax.swing.plaf.basic.Bas icButtonListener.mouseReleased(未知源)
在java.awt.Component.processMouseEvent(未知源)
在javax.swing.JComponent.processMouseEvent(未知源)
在java.awt.Component。 processEvent(未知源)
在java.awt.Container.processEvent(未知源)
在java.awt.Component.dispatchEventImpl(未知源)
在java.awt.Container.dispatchEventImpl(未知源)
在java.awt.Component.dispatchEvent(未知源)
在java.awt.LightweightDispatcher.retargetMouseEvent(未知源)
在java.awt.LightweightDispatcher.processMouseEvent(未知来源)
在java.awt.LightweightDispatcher.dispatchEvent(未知源)
在java.awt.Container.dispatchEventImpl(未知源)
在java.awt.Window.dispatchEventImpl(未知源)
在java.awt.Component.dispatchEvent(未知源)
在java.awt.EventQueue.dispatchEventImpl(未知来源)
在java.awt.EventQueue.access $ 000(未知来源)
在java.awt.EventQueue $ 1.run(未知来源)
在java.awt.EventQueue $ 1.run(未知来源)
在java.security.AccessController.doPrivileged(本机方法)
在java.security.AccessControlContext $ 1.doIntersectionPrivilege(未知源)
在java.security.AccessControlContext $ 1.doIntersectionPrivilege(未知源)
在java.awt.EventQueue $ 2.run(未知源)
在java.awt。 EventQueue $ 2.run(未知源)
在java.security.AccessController.doPrivileged(本机方法)
在java.security.AccessControlContext $ 1.doIntersectionPrivilege(未知源)
在java.awt。 EventQueue.dispatchEvent(未知源)
在java.awt.EventDispatchThread.pumpOneEventForFilters(未知源)
在java.awt.EventDispatchThread.pumpEventsForFilter(未知源)
在java.awt.EventDispatchThread。 pumpEventsForHierarchy(未知源)
在java.awt.EventDispatchThread.pumpEvents(未知源)
在java.awt.EventDispatchThread.pumpEvents(未知源)
在java.awt.EventDispa tchThread.run(未知来源)


解决方案

 code> if(Text.equals(null)); 

每次文本为空时,上述会抛出NullPointerException。任何时候你使用。 if(Text!= null)如果你在之后得到一个NPE,那么你将获得一个NullPointerException。



>,请发布堆栈跟踪。


I'm getting a really annoying error, saying I'm getting a null pointer exception but there's an if statement to check to see if the text is null before proceeding:

    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!");
    }

}

The only time it even considered the 'else' was through this:

    if(Text.equals(null));

I've also tried doing:

   if(Text != null));

which has worked for me in the past but not now! Other classes are:

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();
}

Thank you, again!

Error:

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

I get the error when I've typed or not typed something and pressed the enter button.

This is the error for

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));

The above will throw a NullPointerException each time Text is null. Anytime you use the "." operator on null you get a NullPointerException.

If you are getting a NPE after if(Text != null), please post the stack trace.

这篇关于使用'if'语句检查后,空指针异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆