NullPointerException aber warum?

Status
Nicht offen für weitere Antworten.

foxy

Aktives Mitglied
Jo hi

ich soll einen Stack programmieren, nun kommt das aber
es soll als array implimentiert werden.... komisch is aber so ;)

das ganze ist so aufgebaut, das eine datei eingelesen werden soll , also eine textdatei,
diese sieht so aus

+name // das + steht für push
+name
- // - steht für pop

hab mir eigens ne klasse geschrieben für auslesen und eine für den StringStack

die implimentation sieht so aus

Code:
public void lesen(String name) throws Exception {
		int zaehler = 1;
		int z = 0;
               String line, line2;
		try {
			BufferedReader in = new BufferedReader(new FileReader(name));
			file = new File(name);

			if (!file.exists() && !file.canRead() && !file.isFile()) {
				throw new FileException();
			}

			
			while ((line = in.readLine()) != null) {
				z++;
			}
			stack = new StringStack(z);

			while ((line2 = in.readLine()) != null) {
				ausgeben(zaehler);
				zaehler++;
				if (line.substring(0, 1).equals("+")) {
					stack.push(line2.substring(1));
				} else if (line2.substring(0, 1) .equals("-")) {
					stack.pop();
				} else {
					throw new NoSuchElementException("Fehler in der Zeile :  " + Integer.toString(zaehler));
				}
			}
			in.close();
		} catch (FileException e) {
			throw new FileException("File error");
		}

	}

an dieser stelle bekomme ich den fehler.
if (line.substring(0, 1).equals("+")) {
stack.push(line2.substring(1));


normal ist das wenn ja keine referenz auf die klase StingStack gibt, ist aber initialisiert

noch zu der ersten while schleifen, ist nur aus dem grund, weil ich wissen muss wir gross das array sein muss, also zähl ich erst mal die anzahl der zeilen in der datei

danke für die hilfe .... wenn noch fragen offen sind, einfach fragen
 

mattulla

Bekanntes Mitglied
Grundsaetzlich solltest du die if-Abfrage erst einmal umformulieren:

Code:
if ("+".equals(line.substring(0, 1))) {
 

foxy

Aktives Mitglied
bei push ... und bummer sry ... das ist schon umgeändert

das muss natürlich line2 heissen

aber dennoch selber fehler
 

foxy

Aktives Mitglied
ok also

ich hab es ein weinig umgeschrieben

er ging ja noch nicht einmal in die schleife

da hab ich mir gedach mach ich mal line2 = in.readLine() == null

was eigentlich dumm ist aber dennoch ging er rein

also folgere ich daraus, das er in der datei, obwohl etwas drin steht eben eine Null-Referenz direkt auf der ersten line zurückgibt
 

norman

Top Contributor
Code:
line2 = in.readLine() == null
denke ich müsste 'true' oder 'false' in deine variable line2 schreiben. eine zeile code wird von rechts beginnenden abgearbeitet..
 

foxy

Aktives Mitglied
Code:
(line2 = in.readLine()) != null

naja ... so durchlaufe ich aber dennoch ne txtdatei zeile für zeile

und er gibt mir aber nich die erste zeile zurück ... hab ich was mit dem reader falsch gemacht?
 

mattulla

Bekanntes Mitglied
norman hat gesagt.:
foxy hat gesagt.:
Code:
if (line.substring(0, 1).equals("+")) {
mattulla hat gesagt.:
Grundsaetzlich solltest du die if-Abfrage erst einmal umformulieren:
Code:
if ("+".equals(line.substring(0, 1).equals)) {

warum?


Weil der Code auf keinen Fall eine NullPointer-Exception werfen kann....der andere hingegen schon!
 

mattulla

Bekanntes Mitglied
hab gerade gesehn, dass ich das equals versehentlich noch doppelt drinne hatte habs aber jetzt oben korrigiert.

@norman:
"+" ist auf jeden Fall immer ein Objekt und kann somit keine NullPointer-Exeption werfen. line.substring(0, 1) hingegen kann durchaus auch ein NullPointer sein welcher dann die Exeption wirft.
 

foxy

Aktives Mitglied
sooo

also

das mit dem nullpointer ist geklärt :) war natürlich wie soll es auch sein meine eigene dummheit ;)

schaut mal wie ich den reader initialisiere ;) naja

natürlich muss ich ihn mit der file und nicht nur mit dem string initialisieren :D

ok soweit so gut aber ein problem bleibt noch






ich denke da ich ja die datei einmal durchlaufe, und somit der Pointer des readLine auf die letzte zeile gesetzt habe, wird der null sein wenn ich in die 2. schleife komme oder irre ich mich da?


weil mein stack hat immer den wert Null ... klar, weil die schleife mit push und pop nicht durchlaufen wird, weil direkt die erste abgefragte zeile = null ist

kann ich irgendwie den pointer der readLine wieder an den anfang der datei setzen OHNE das ich ein neues Object erzeugen muss?
 

Murray

Top Contributor
mattulla hat gesagt.:
@norman:
"+" ist auf jeden Fall immer ein Objekt und kann somit keine NullPointer-Exeption werfen. line.substring(0, 1) hingegen kann durchaus auch ein NullPointer sein welcher dann die Exeption wirft.
Machmal ist dieser Tip ganz hilfreich, aber in diesem Fall eher nicht: String#substring kann m.E. niemals null zurückliefern: es gibt höchstens mal einen Leerstring (oder bei ungültigen Parametern auch eine ArrayIndexOutOfBoundsException)
 

byte

Top Contributor
Code:
if(line.substring(0, 1).equals("+"))

Code:
if("+".equals(line.substring(0, 1)))

Beide Varianten können sowohl eine NullPointer als auch eine StringIndexOutOfBounds Exception werfen. Es ist also vollkommen Jacke wie Hose, welche Variante man verwendet.
 

byte

Top Contributor
foxy hat gesagt.:
ich denke da ich ja die datei einmal durchlaufe, und somit der Pointer des readLine auf die letzte zeile gesetzt habe, wird der null sein wenn ich in die 2. schleife komme oder irre ich mich da?

Jo, genauso ist es. Die erste Schleife geht alle Zeilen der Datei durch. Die zweite Schleife sollte gar nicht mehr betreten werden, weil readLine null liefert. Wenn Du an der Stelle wieder neu zeilenweise durch die Datei laufen willst, dann musst Du den Reader neu initialisieren bzw. ein reset() sollte reichen.
 

foxy

Aktives Mitglied
daran liegt es nicht .... die abfrage ist korekt

nur überleg mal

du öffnest einen stream dieser zeigt am anfang natürlich auch auf den anfang der datei (logisch)

dann durchlaufe ich mit dem zeiger die datei, um zu sehen wieviele zeilen darin enthalten sind
----> nun ist der zeiger aber nicht mehr am anfang der datei :) sondern am ende ^^

also kann ich nich einfach bei der 2. schleife

Code:
while ((line2 = inreadLine()) != null)
schreiben
weil line2 IMMER null sein wird :) sofort bei dem ersten durchlauf
 

Murray

Top Contributor
foxy hat gesagt.:
kann ich irgendwie den pointer der readLine wieder an den anfang der datei setzen OHNE das ich ein neues Object erzeugen muss?

Dafür gibt es mark und reset, aber das wird nur bei kleinen Dateien funktionieren; sicherer ist es, den Reader neu zu erzeugen.

Versuch doch mal, mit einer Iteration der Datei auszukommen: entweder bringst Du Deinem Stack bei, dynamisch zu wachsen, oder Du arbeitest mit einer Zwischenliste.
 

foxy

Aktives Mitglied
den befehlt gibt es :)

erst mal danke natürlich ^^

aber


java.io.IOException : Stream not marked

hab den direkt über die 2. schleife gemacht
 

byte

Top Contributor
Dann initalisier den Reader einfach neu nach der ersten Schleife:

Code:
in = new BufferedReader(...);
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H NullPointerException, aber wieso? Java Basics - Anfänger-Themen 5
F java.lang.NullPointerException, kann aber nicht sein! Java Basics - Anfänger-Themen 4
W Compiler-Fehler NullPointerException. Aber wieso? Java Basics - Anfänger-Themen 2
T Compiler-Fehler NullpointerException - Wert kann aber ausgelesen werden Java Basics - Anfänger-Themen 2
N NullPointerException aber warum? Java Basics - Anfänger-Themen 10
S nullpointerexception. aber warum ? Java Basics - Anfänger-Themen 3
D NullPointerException aber warum Java Basics - Anfänger-Themen 14
C NullPointerException, aber nichts darf null sein? Java Basics - Anfänger-Themen 7
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
H Liste Knoten NullPointerException Java Basics - Anfänger-Themen 7
C Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 10
LePetitChat1 Arrays - NullPointerException? Java Basics - Anfänger-Themen 14
berserkerdq2 Nullpointerexception, obwohl ich Array initialisiere? Java Basics - Anfänger-Themen 1
U Warum gibt das eine Nullpointerexception? (Switch) Java Basics - Anfänger-Themen 6
missy72 Klassen Objekt Array NullPointerException Java Basics - Anfänger-Themen 3
Jose05 Nullpointerexception Java Basics - Anfänger-Themen 7
emx-zee Erste Schritte NullPointerException, Array mit zufälligen Zahlen füllen Java Basics - Anfänger-Themen 2
Jose05 Nullpointerexception bei Umwandlung von String zu int Java Basics - Anfänger-Themen 2
H Java NullPointerException Java Basics - Anfänger-Themen 4
YaU Vererbung erstellt NullPointerException? Java Basics - Anfänger-Themen 4
D Hilfe beim Erzeugen eines Arrays NullPointerException wird ausgelöst Java Basics - Anfänger-Themen 11
L Threads Komischer NullPointerException Java Basics - Anfänger-Themen 2
H Fehler: NullPointerException und ich weiß net warum Java Basics - Anfänger-Themen 4
F Fehlermeldung java.lang.NullPointerException Java Basics - Anfänger-Themen 4
Avalon NullPointerException beim Mocken Java Basics - Anfänger-Themen 6
D NullPointerException in foreach loop Java Basics - Anfänger-Themen 1
D java.lang.NullPointerException Java Basics - Anfänger-Themen 19
T Bufferedwriter code Nullpointerexception Java Basics - Anfänger-Themen 4
D NullPointerException im Array Java Basics - Anfänger-Themen 4
X java.lang.NullPointerException fehler ? Java Basics - Anfänger-Themen 1
B java.lang.NullPointerException bei javafx Java Basics - Anfänger-Themen 10
J NullPointerException beim Klonnen eines Arayys und beim aufrufen einer Methode Java Basics - Anfänger-Themen 2
V NullPointerException Java Basics - Anfänger-Themen 2
S NullPointerException während ResultSet Java Basics - Anfänger-Themen 7
V NullPointerException, wenn Key und Value null sind Java Basics - Anfänger-Themen 2
scratchy1 NullPointerException Java Basics - Anfänger-Themen 19
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
F Wie kann ich diese NullPointerException umgehen?! Java Basics - Anfänger-Themen 41
dapzoo Compiler-Fehler Beim Werte verteilen in Objektarray NullPointerException Java Basics - Anfänger-Themen 4
W Optional<T> - NullPointerException Java Basics - Anfänger-Themen 37
Jascha NullPointerException vs NumberFormatException Java Basics - Anfänger-Themen 5
L Variablen NullPointerException bei Dateigröße (Nr.1) Java Basics - Anfänger-Themen 4
M Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 13
D NullPointerException umgehen Java Basics - Anfänger-Themen 17
Z Objekt Array führt zum NullPointerException Java Basics - Anfänger-Themen 2
W NullPointerException obwohl nicht null? Java Basics - Anfänger-Themen 3
W ArrayList NullPointerException Java Basics - Anfänger-Themen 4
A NullPointerException Java Basics - Anfänger-Themen 6
S NullPointerException Java Basics - Anfänger-Themen 4
T OOP Wörterbuch NullPointerException Java Basics - Anfänger-Themen 4
R Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 10
O NullPointerException Java Basics - Anfänger-Themen 2
M Interpreter-Fehler Feld NullPointerException Java Basics - Anfänger-Themen 4
L Variablen Unerklärliche NullPointerException Java Basics - Anfänger-Themen 2
E Compiler-Fehler nullPointerException in verschachteltem Modell Java Basics - Anfänger-Themen 6
DaCrazyJavaExpert Threads NullPointerException Java Basics - Anfänger-Themen 8
DaCrazyJavaExpert Compiler-Fehler Variable nicht mit null initialisiert, trotzdem: NullPointerException Java Basics - Anfänger-Themen 28
kodela NullPointerException Java Basics - Anfänger-Themen 12
R Taschenrechner NullPointerException Java Basics - Anfänger-Themen 1
H java.lang.NullPointerException Java Basics - Anfänger-Themen 4
H NullPointerException obwohl Objekt angelegt wurde Java Basics - Anfänger-Themen 1
A Threads Reentrantlock | NullpointerException möglicher Deadlock? Java Basics - Anfänger-Themen 0
K Compiler-Fehler NullPointerException lösen Java Basics - Anfänger-Themen 16
G java.lang.NullPointerException Java Basics - Anfänger-Themen 3
P Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 1
E Compiler-Fehler java.lang.NullPointerException Java Basics - Anfänger-Themen 2
S Methoden Methode funktioniert nicht | NullPointerException Java Basics - Anfänger-Themen 6
F NullpointerException bei zweidimensionalem Array Java Basics - Anfänger-Themen 2
Z OOP - Array ständig NullPointerException Java Basics - Anfänger-Themen 4
J Verstehe die NullPointerException nicht Java Basics - Anfänger-Themen 1
T Nullpointerexception und es wird nichts angezeigt Java Basics - Anfänger-Themen 15
B ProcessMessage NullPointerException Java Basics - Anfänger-Themen 11
shiroX Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 9
MrSnake ItemListener mit NullPointerException Java Basics - Anfänger-Themen 3
J java.lang.NullPointerException in meiner JavaFXControllerKlasse Java Basics - Anfänger-Themen 26
M NullPointerException Java Basics - Anfänger-Themen 8
B Vererbung NullPointerException Java Basics - Anfänger-Themen 38
D Communications link failure | java.lang.NullPointerException Java Basics - Anfänger-Themen 3
G NullPointerException Java Basics - Anfänger-Themen 1
J NullpointerException Java Basics - Anfänger-Themen 1
M Interpreter-Fehler Nullpointerexception trotz Ordentlicher Initialisierung Java Basics - Anfänger-Themen 4
M String-Vergleich und NullPointerException Java Basics - Anfänger-Themen 4
D Java Fehler: NullPointerException Java Basics - Anfänger-Themen 1
M Vergleich zweier Array Stellen mit equals/NullpointerException Java Basics - Anfänger-Themen 9
X Problem mit NullPointerException Java Basics - Anfänger-Themen 2
K NullPointerException in der Hashtable Java Basics - Anfänger-Themen 4
S Interpreter-Fehler Hilfestellung bei einer NullPointerException Java Basics - Anfänger-Themen 1
S GraphNode --- Dijkstra Algorithmus : NullPointerException Java Basics - Anfänger-Themen 1
L NullPointerException Java Basics - Anfänger-Themen 11
M Nullpointerexception??? Java Basics - Anfänger-Themen 2
W NullPointerException bei DefaultListModel Java Basics - Anfänger-Themen 5
N NullPointerException bei Konsolenausgabe Java Basics - Anfänger-Themen 5
J Klasse in Klasse; NullPointerException Java Basics - Anfänger-Themen 8
R NullPointerException wegen JPanel oder doch nicht ? Java Basics - Anfänger-Themen 7
Q NullPointerException Java Basics - Anfänger-Themen 5
H NullPointerException Java Basics - Anfänger-Themen 5
T Threads MultiThreading NullPointerException Java Basics - Anfänger-Themen 7
K NullPointerException wird geworfen, bitte um Hilfe! Java Basics - Anfänger-Themen 7
O Objekt weitergeben Meth Class NullPointerException Java Basics - Anfänger-Themen 2
J Char-Array - NullPointerException Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben