Vergleich zweier Array Stellen mit equals/NullpointerException

Hey ich habe eine Aufgabe bekommen, in der ich aus einem Textdokument Telefonnummern auslesen soll, die Duplikate entfernen und anschließend alles in ein neues Dokument schreiben soll. Das Auslesen der Datei funktioniert schonmal. Ich möchte jetzt jeden Wert innerhalb des Arrays miteinander mithilfe von equals vergleichen um Duplikate zu finden und diese anschließend auf 0 zu setzen. So kann ich hinterher mithilfe von der If-Anweisung alle Werte mit 0 beim Neu Schreiben auslassen.

Mein Problem ist nun das beim Testen der Werte untereinander eine NullPointerException bekomme und ich nicht ganz durchblicke was genau ich jetzt tun soll. hoffe mir kann jemand helfen.

Java:
//Name: 
//Uebung 1    Aufgabe 2b

import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;

class nummer {
	public static void main (String[]args) throws IOException{
		
		//Den Text aus der Datei Zeilenweise auslesen
		FileReader fr = new FileReader("Nr.txt");
		BufferedReader br = new BufferedReader(fr);
		String [] oldArr = new String [100];
		String [] newArr = new String [100];
		String zeile=br.readLine();
		
		//Die Zeilen in einem Array speichern (und testweise abfragen)
		int i=0;
		while (zeile!=null){
			oldArr[i]=zeile;
			System.out.println(oldArr[i]);
			zeile=br.readLine();
			i++;
		}
		
		//Jede zeile untereinander miteinander vergleichen, und falls eine doppelt ist diese 0 setzen
		int j=0;
		for (j=0;j<=i;j++){
			for (int k=0;k<=i;k++){
				if (oldArr[j].equals(oldArr[k])){
					oldArr[k]="0"; 
				}
			}	
		}
		//testweise Ausgabe ob doppelte 0 gesetzt wurde
		System.out.println();
		for (int z=0;z<=20;z++){
			System.out.println(oldArr[z]);
		}
	}
}

Edit: Fehler ist NullPointerException in Zeile 31
 
Zuletzt bearbeitet:

VfL_Freak

Top Contributor
Moin,

nun, so denn die Zeilenangabe stimmt, wird dort 'oldArr' wohl null sein .... :autsch:
Sicher, dass beim 'println' im Block vorher wirklich was ausgegeben wird ???:L

Gruß Klaus
 
C:\Users\Ich\Desktop\Uni\2. Semester\Datenstrukturen und effiziete A
lgorithmen\Übung\Hausaufgabe 1>java nummer
05846979274
11537843154
18641536733
18613513547
23712846184
36459255596
27361872363
11122233344
05846979274
58694763843
32443245325
32423523528
12381964574
98781725362
12381687444
11122233344
Exception in thread "main" java.lang.NullPointerException
at nummer.main(hausaufgabe2b.java:31)

Das ist meine genaue Fehlermeldung :D Die zahlen die dort ausgegeben werden entsprechen denen meiner Textdatei
 

VfL_Freak

Top Contributor
Moin,

hmm, ich würde jetzt statt einer NPE eher IndexOutBound-Exception erwarten!

Wieviele Zeilen sollen genau eingelesen werden (wie groß ist 'i') ?
Wieviele Zeilen werden korrekt eingelesen?
Prüf' mal im Debugger wie die Werte von 'j' und 'k' zum Zeitpunkt des Absturzes stehen (oder lass' sie in jedem Durchlauf in der Konsole ausgeben) !

Zudem denke ich, dass in allen for-Schleife nur auf < und nicht <= geprüft werden sollte, da es sonst zur erwähnten Indexverletzung kommen wird! Wenn Du 10 Zeilen einliest, läuft der Index im Array ja von 0 - 9 !!

Gruß Klaus
 

Thallius

Top Contributor
<=i kann eigentlich nicht gehen.

Wenn du eine Zeile einlesen würdest, dann hättest Du nur array[0] belegt, i würde aber trotzden incrementiert wäre also 1.

WEnn du nun <=1 machst, dann würden j und k 1 werden, was aber eigentlich ein IndexOutOfBoundsExeception geben müßtte und keine NullpointerException.

Gruß

Claus

P.S. Verdammt zu langsam :)
 
Zuletzt bearbeitet:
Er liest 16 Zeilen ein also müsste i bei 16 stehen. Der Array selbst hat eine Größe von 100. Dieser sollte eigentlich unbegrenzt sein, aber das ist eine Problematik mit der ich mich später beschäftigen wollte. Das mit den for-schleifen kann ich probieren, bei dem rest was du gesagt hast muss ich ehrlich gesagt zugeben, dass ich keine Ahnung habe was du meinst, bzw. wie das funktioniert :noe:

Edit:
Okay das mit der Änderung innerhalb der for-Schleifen gab schonmal eine Änderung in der Ausgabe. Zwar nicht das was ich erhofft habe, aber immerhin etwas. Dann schau ich mal wie es jetzt weiter geht.

Neue Ausgabe:


C:\Users\Ich\Desktop\Uni\2. Semester\Datenstrukturen und effiziete A
lgorithmen\Übung\Hausaufgabe 1>java nummer
05846979274
11537843154
18641536733
18613513547
23712846184
36459255596
27361872363
11122233344
05846979274
58694763843
32443245325
32423523528
12381964574
98781725362
12381687444
11122233344

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
null
null
null
null
null
 
Zuletzt bearbeitet:

Thallius

Top Contributor
Nunja, du vergleichst jeden Eintrag mit jedem. Da muss doch nachher alles "0" sein. Du must die innere Schleife immer bei der äußeren +1 beginnen lassen um das zu verhindern.

Dabei solltest du dann aber wieder beachten, dass du dann die äußerer Schleife auch nur bis i-2 laufen lassen darfst.

Gruß

Claus
 
Zuletzt bearbeitet:
Okay das kann ich vom logischen nicht ganz nachvollziehen, da ich dachte das beide Variablen welche den Array mit hochzählen bei 0 anfangen müssten, so wie eben der Array selbst :D

Java:
		//Jede zeile untereinander miteinander vergleichen, und falls eine doppelt ist diese 0 setzen
		int j=0;
		for (j=0;j<i-1;j++){
			for (int k=1;k<i;k++){
				if (oldArr[j].equals(oldArr[k])){
					oldArr[k]="0"; 
				}
			}	
		}

Entspricht das dem was du gemeint hast? habe k in der inneren Schleife um 1 erhöht und j bei der äußeren Schleife auf i-2 laufen lassen. Wobei ich es ja eigentlich eh gleich probieren werde :D ;)


Edit:
Ich sehe schon, du hast Recht, das Ergebnis ist anders aber diesmal sind in der Ausgabe 2 richtige Zahlen enthalten, der Rest ist 0. Muss also irgendwo nochwas falsch sein.
Habe immer Probleme zu verstehen wo und bis wann welche Schleife zählen muss.
 
Zuletzt bearbeitet:

Thallius

Top Contributor
Am einfachsten ist es Du malst dir das einfach mal auf. Links der Index, rechts der Inhalt. Also

0 12345
1 23456
2 34567
3 45678
4 56789

So, was machst du jetzt im Moment in Deinem Programm?

Du nimmst den ersten Eintrag (j=0) und dann in der inneren Schleife den zweiten Eintrag (k=1) und vergleichst diese. Also
12345 == 23456 ? Du stellst fest: NE sind sie nicht also bleibt der zweite Eintrag so wie er ist.
Das machst du mit allen Einträgen in der inneren Schleife. Dann nimmst du den zweiten Eintrag (j=1) und vergleichst ihn mit dem zweiten Eintrag (k=1) was natürlich gleich ist. Also wird der zweite Eitnrag "0".... Fehler! Das willst du ja gar nicht.

Jetzt überleg Dir einfach mal wie Du es von Hand machen würdest und das implementierst du dann in dein Programm.

Gruß

Claus
 
Ai, jetzt wo du es sagst sehe ich auch den fehler. Da müsste ich erstmal ne Weile drüber nachdenken, spontan fällt mir nichts ein. Vielleicht könnte man mithilfe von einer if Anweisung prüfen ob die referenz der Arrays in beiden Schleifen gleich ist, und sofern dies der Fall ist dann das auslassen.

Edit:

Super, ich habs voll drauf :D Danke, einziges Problem ist nur das ich am Ende noch 4 mal die Ausgabe "null" habe, aber das heißt ja nur, dass ich irgendeine Schleife zu weit laufen lasse.

Danke nochmal :)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Vergleich zweier ArrayLists mit Ausgabe an dritte ArrayList Java Basics - Anfänger-Themen 5
G Klassen Vergleich zweier Klassen Java Basics - Anfänger-Themen 23
L Vergleich zweier Variablen, mit Abweichung Java Basics - Anfänger-Themen 3
N Methoden Methode zum Vergleich zweier Geburtstage Java Basics - Anfänger-Themen 5
N Vergleich zweier String Arrays scheitert Java Basics - Anfänger-Themen 3
L vergleich zweier texte Java Basics - Anfänger-Themen 18
B Vergleich zweier Objekte durch "Hashfunktion" Java Basics - Anfänger-Themen 12
G Vergleich zweier Arrays Java Basics - Anfänger-Themen 8
K Vergleich zweier Objekte in einer HashMap Java Basics - Anfänger-Themen 6
N Vergleich zweier Elemente verschiedener Vectoren Java Basics - Anfänger-Themen 2
G Vergleich zweier 'long'-Werte. Problem! Java Basics - Anfänger-Themen 6
heinrich172 Methoden Trotz gleichem Element stimmt Vergleich nicht? Java Basics - Anfänger-Themen 7
U Interface als PAramter (Vergleich) und ein Error Java Basics - Anfänger-Themen 9
K Erste Schritte Wie schnell ist LinkedHashMap im Vergleich zur ArrayList, wenn alle Entries durchlaufen werden? Java Basics - Anfänger-Themen 47
B Performance-Vergleich mit C++ Java Basics - Anfänger-Themen 55
K Rekursiver Vergleich von Textmuster und Text Java Basics - Anfänger-Themen 2
Zeppi Vergleich von Array-Inhalten Java Basics - Anfänger-Themen 14
Lena_2611 Vergleich von Array1 Index mit Array2 Wert und erzeugen eines neues Arrays Java Basics - Anfänger-Themen 8
B Date - Vergleich (equals / after) ? Java Basics - Anfänger-Themen 3
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
W Vergleich von DatenPaketen Java Basics - Anfänger-Themen 6
B String vergleich Java Basics - Anfänger-Themen 3
C Probleme mit String-Vergleich Java Basics - Anfänger-Themen 4
K File-Name Vergleich Java Basics - Anfänger-Themen 2
V Fließkommazahlen Vergleich Java Basics - Anfänger-Themen 7
J Vergleich Java Basics - Anfänger-Themen 2
N Vergleich von Strings schlägt fehl.. Java Basics - Anfänger-Themen 5
T Vergleich und Ausgabe von Zahlen Java Basics - Anfänger-Themen 1
J Fehler bei Vergleich auf den grössten Wert Java Basics - Anfänger-Themen 2
A Do-While Schleife; int vergleich Java Basics - Anfänger-Themen 2
G Wieviel kostet der Zugriff auf Objektattribute im Vergleich zur Erstellung von vars in Methode? Java Basics - Anfänger-Themen 11
T Input/Output String-Vergleich schlägt fehl Java Basics - Anfänger-Themen 7
W Konvertierung und Vergleich unterschiedlicher Zeitformate Java Basics - Anfänger-Themen 11
W Vergleich mit If-Abfrage nur für Zahlen bis 07 möglich - Warum? Java Basics - Anfänger-Themen 7
M String-Vergleich und NullPointerException Java Basics - Anfänger-Themen 4
L PW-Vergleich Java Basics - Anfänger-Themen 5
S Vergleich von Listen Java Basics - Anfänger-Themen 6
J vergleich von arrays (benötige Hilfe/Denkanstoß) Java Basics - Anfänger-Themen 16
V Einfacher vergleich von Arrays geht schief Java Basics - Anfänger-Themen 2
T Operatoren Multiplikation nur mit Addition, Subtraktion und Vergleich Java Basics - Anfänger-Themen 29
N Methoden Array vergleich funzt nicht Java Basics - Anfänger-Themen 8
B Char-Vergleich Sonderzeichen Java Basics - Anfänger-Themen 6
S Vergleichsmethode zum Objekt-Vergleich mit < und > Java Basics - Anfänger-Themen 4
F Problem bei Vergleich Java Basics - Anfänger-Themen 3
S File vergleich - Junit Java Basics - Anfänger-Themen 6
P String-Vergleich Java Basics - Anfänger-Themen 3
S Multiplikation durch Addition, Subtraktion und Vergleich von Zahlen Java Basics - Anfänger-Themen 14
W Vergleich ob Buchstabe in einem Wort enthalten ist Java Basics - Anfänger-Themen 3
C String Objekte Vergleich je nach Instanzierung unterschiedlich!!?!! Java Basics - Anfänger-Themen 4
R String-Vergleich Java Basics - Anfänger-Themen 15
C Variablen Vergleich funktioniert nicht Java Basics - Anfänger-Themen 11
J Erste Schritte Vergleich der String-Objekte Java Basics - Anfänger-Themen 17
B Zwei verschiedene Daten vergleich Java Basics - Anfänger-Themen 2
A Variablen Vergleich Java Basics - Anfänger-Themen 5
P Erste Schritte vergleich substring und string Java Basics - Anfänger-Themen 4
G Date - Calender | "Vergleich" Java Basics - Anfänger-Themen 3
M Vergleich mit Toleranz Java Basics - Anfänger-Themen 7
B Objekt Vergleich - Unterschiede ausgeben Java Basics - Anfänger-Themen 4
P Vergleich mit Variablen Java Basics - Anfänger-Themen 6
Y Java Programm URL und String Vergleich! Java Basics - Anfänger-Themen 4
K Vergleich von variable und array Java Basics - Anfänger-Themen 9
H Beim Vergleich/Sortieren mehr als zwei Objekte berücksichtigen Java Basics - Anfänger-Themen 14
P Vergleich von Enums Java Basics - Anfänger-Themen 4
S String Vergleich funktioniert nicht Java Basics - Anfänger-Themen 3
A String-Vergleich geht nicht Java Basics - Anfänger-Themen 2
U Automatenprüfung in Java implementieren — String Vergleich klappt nicht Java Basics - Anfänger-Themen 40
F Methoden Vergleich von int Zahlen Java Basics - Anfänger-Themen 16
F Login Passwort-Vergleich Java Basics - Anfänger-Themen 12
N Vergleich per equals Java Basics - Anfänger-Themen 5
Z XML Vergleich Java Basics - Anfänger-Themen 20
S Herunterladen von Dateien mit Vergleich Java Basics - Anfänger-Themen 6
L Problem String-Vergleich Java Basics - Anfänger-Themen 2
E Objekte-Vergleich Java Basics - Anfänger-Themen 6
Y Datentypen String vergleich Java Basics - Anfänger-Themen 3
R Vergleich von Objekten anhand variierender Kriterien Java Basics - Anfänger-Themen 5
K Datentypen Arrays in Java - Adress-Arithmetik im Vergleich zu Listen Java Basics - Anfänger-Themen 4
S equals vergleich Java Basics - Anfänger-Themen 10
A Datentypen instanceof VS Class - Vergleich Java Basics - Anfänger-Themen 4
M Char vergleich zu Int Java Basics - Anfänger-Themen 10
G Wann ist ein == Vergleich bei Gleitkommazahlen fahrlässig? Java Basics - Anfänger-Themen 8
algorismi Ausführungszeit Vergleich == true Java Basics - Anfänger-Themen 8
J Performance Vergleich von if-Abfragen mit mehreren Bedingungen Java Basics - Anfänger-Themen 9
T Zwei listen vergleich und selbige löschen Java Basics - Anfänger-Themen 4
T Vergleich mit Typecasts Java Basics - Anfänger-Themen 3
Screen Eine Frage zu moueMove in applets und deren Vergleich Java Basics - Anfänger-Themen 11
M Vergleich Float-, Doublewert Java Basics - Anfänger-Themen 10
U Methode Vergleich von 2 Arrays Java Basics - Anfänger-Themen 5
S String Vergleich mit Passwort geht nur bei Zahlen ? Java Basics - Anfänger-Themen 7
G Vergleich klappt nicht Java Basics - Anfänger-Themen 3
T Vergleich von generischen Typen Java Basics - Anfänger-Themen 2
C DB Vergleich mit Eingabe Java Basics - Anfänger-Themen 5
G Vergleich großer Basen/Exponenten? Java Basics - Anfänger-Themen 3
F Vergleich von Objekten Java Basics - Anfänger-Themen 2
N Vergleich findet nicht statt. Java Basics - Anfänger-Themen 13
M 2 Fragen: Vergleich, aber wie? Was passiert in diesem Teil? Java Basics - Anfänger-Themen 18
A Vergleich schlägt fehl Java Basics - Anfänger-Themen 15
G Vergleich bei MD5-Verschlüsselung Java Basics - Anfänger-Themen 3
R +1 Vergleich Java Basics - Anfänger-Themen 3
E Char vergleich Java Basics - Anfänger-Themen 7
loadbrain Array vergleich mit 2 for schleifen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben