Null-Zeiger-Ausnahme nach Rücksprache mit der 'if' - Anweisung
Ich bin langsam echt nervig der Fehler, zu sagen, ich bin immer ein null-Zeiger-Ausnahme aber gibt es eine if-Anweisung, um zu überprüfen, um zu sehen, wenn der text null ist, bevor Sie fortfahren:
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!");
}
}
Die einzige Zeit, die es sogar als das 'andere' wurde durch diese:
if(Text.equals(null));
Habe ich auch versucht zu tun:
if(Text != null));
gearbeitet hat für mich in der Vergangenheit, aber nicht jetzt! Weitere Klassen sind:
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();
}
Danke, wieder!
Fehler:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at textfiles.JListExample.actionPerformed(JListExample.java:115)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
Bekomme ich die Fehlermeldung, wenn ich eingegeben hast oder nicht, tippte etwas ein und drückte die enter-Taste.
Dies ist der Fehler, für
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)
In dem, was wie tun, bekommen Sie die Ausnahme? Vielleicht ist es nicht mit den
zwei Dinge. Sollte der Text beginnen mit einem Kleinbuchstaben. Dann werden Sie den Aufruf einer gleichen Methode auf dem String-Objekt. Wenn der string null ist, erhalten Sie einen Null-Zeiger-Ausnahme. If(text != null ) sollte funktionieren, es sei denn, Sie haben einige logische Fehler. Ich glaube, Sie könnten haben eine doppelte negation. if(!(text != null)) oder einige andere einfache Fehler wie, dass.
Und was ist an der Zeile: bei Textdateien.JListExample.actionPerformed(JListExample.java:115)
Welche Zeile 115? Meine Vermutung ist, dass RF ist nicht initialisiert.
eine andere variable null ist. Antwort John B ' s Frage, um herauszufinden, welche. Der Schlüssel ist, um sich sorgfältig auf die Fehlermeldung, da es nicht ein bedeutungsloser Haufen Müll, aber in der Regel enthält die Informationen, die erlauben würde, Sie zu lösen diese sich selbst.
Text
variable...zwei Dinge. Sollte der Text beginnen mit einem Kleinbuchstaben. Dann werden Sie den Aufruf einer gleichen Methode auf dem String-Objekt. Wenn der string null ist, erhalten Sie einen Null-Zeiger-Ausnahme. If(text != null ) sollte funktionieren, es sei denn, Sie haben einige logische Fehler. Ich glaube, Sie könnten haben eine doppelte negation. if(!(text != null)) oder einige andere einfache Fehler wie, dass.
Und was ist an der Zeile: bei Textdateien.JListExample.actionPerformed(JListExample.java:115)
Welche Zeile 115? Meine Vermutung ist, dass RF ist nicht initialisiert.
eine andere variable null ist. Antwort John B ' s Frage, um herauszufinden, welche. Der Schlüssel ist, um sich sorgfältig auf die Fehlermeldung, da es nicht ein bedeutungsloser Haufen Müll, aber in der Regel enthält die Informationen, die erlauben würde, Sie zu lösen diese sich selbst.
InformationsquelleAutor liloka | 2011-09-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den oben wirft eine NullPointerException jedes mal Text null ist. Jedes mal, wenn Sie die ". " - operator auf null bekommst du eine NullPointerException.
Wenn Sie sind immer eine NPE nach if(Text != null), poste bitte den StackTrace.
false
. Der Vergleich dernull == Text
sollte stattdessen verwendet werden. Auch, wie in der Stil-Richtlinien, Variablen in Java sollte in Kleinbuchstaben angegeben werden.weißt du nicht wünschte, es gäbe eine
Objects.equal(a, b)
behandelt null-richtig?Es gibt, Guave Objekte.gleich(a,b). [link](docs.guava-libraries.googlecode.com/git-history/v9.0/javadoc/..., java.lang.Objekt))
Ich habe gerade versucht, die verschiedenen Möglichkeiten vergleichen von Strings wie mir gesagt wurde, im college kann man nicht vergleichen zwei Zeichenfolgen wie diese: String == String b;
Pro ein String == String b. Es ist wahr, dass Sie dies nie tun, für zwei Zeichenfolgen, aber es ist angemessen, wenn der Vergleich gegen null. null ist kein String, es ist eine leere Referenz und vergleichen Sie es gegen einen String, den Sie überprüfen, um zu sehen, ob der String auch eine leere Referenz.
InformationsquelleAutor John B
Meine Vermutung ist, entweder
textToAdd
oderRF
null ist.Wenn
textToAdd
ist einJTextComponent
(oder-Unterklasse, aber ich vermute hier), dann seine -getText()
Methode KANN den Wert null zurückgeben. DaherText
darf NICHT null sein, wie dieser test zeigt.Ausgabe:
Das bedeutet also, dass RF ist null.
Ausgezeichnet! Froh, dass meine Logik war solide - nicht froh, dass Ihre app noch nicht läuft!
InformationsquelleAutor Paul Grime