Exception de Pointeur Null après vérification avec des "si", déclaration

J'en ai vraiment ennuyeux d'erreur, en disant que je suis une exception de pointeur null mais il y a une instruction if pour vérifier si le texte est null, avant de poursuivre:

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

}

Le seul moment où il est même considéré comme le 'else' est grâce à cela:

    if(Text.equals(null));

J'ai aussi essayé de faire:

   if(Text != null));

qui a fonctionné pour moi dans le passé, mais pas maintenant! D'autres classes sont:

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

Merci, encore!

Erreur:

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

Je reçois le message d'erreur quand j'ai tapé ou pas tapé quelque chose et appuyé sur le bouton enter.

C'est l'erreur pour

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)
  • Dans ce comme vous obtenez l'exception? C'est peut-être pas liée à la Text variable...
  • de deux choses. Le texte doit commencer par une minuscule. Ensuite, vous êtes à l'invocation d'une égalité de méthode sur l'objet de type String. Si la chaîne est nulle, vous obtiendrez une exception de pointeur Null. Si(le texte != null ) devrait fonctionner, sauf si vous avez une erreur logique. Je crois que vous pourriez avoir une double négation. if(!(texte != null)) ou de quelque autre erreur simple comme ça.
  • Et ce qui est à la ligne: dans les fichiers texte.JListExample.actionPerformed(JListExample.java:115)
  • Il n'y a pas de double négation, j'ai vérifié pour que. J'ai aussi changé de Chaîne de Texte à texte, et c'est toujours de me donner la même erreur! C'est pourquoi je ne comprends pas pourquoi j'obtiens cette erreur.
  • La ligne 115? Ma conjecture est que RF n'est pas initialisé.
  • une autre variable est null. Répondre à John B de la question de savoir qui. La clé est de regarder attentivement le message d'erreur car il n'est pas dénué d'intérêt tas d'ordures, mais contient généralement les informations qui vous permettrait de résoudre ce problème vous-même.
  • J'ai decalred RF comme ceci: ReadFile RF RF.addNewElement(texte); Est la ligne 115 et je ne suis pas deviner JohnB est droit. ReadFile est juste un autre fichier de classe, si je peux appeler un objet de qui?
  • Vous n'êtes pas à répondre à la question concernant la ligne la ligne 115, et ce n'est pas la façon dont vous déclarer RF, mais comment vous initialiser il. D'où appelez-vous RF = new ReadFile(...)?
  • Je n'ai pas appelé RF = new ReadFile parce que quand je l'ai fait dans une autre méthode que j'ai besoin de passer une chaîne de caractères appelée chemin, mais à présent je n'ai pas besoin de passer une chaîne de caractères.
  • La ligne 115 est RF.addNewElement(texte); je n'ai de réponse >.0
  • Ensuite RF est null comme nous l'avons dit. Vous devez corriger l'erreur.
  • Eh BIEN, j'ai résolu le NullPointerException, donc merci 🙂 je viens de initialisé le ReadFile global et non local, et maintenant je suis de retour pour erreur arrayindexoutofbounds 🙂 génial. Mais je vous remercie!

InformationsquelleAutor liloka | 2011-09-13