Input/Output Vergleich von identischen Strings schlägt fehl

N

Nutella

Gast
Hallo Forum,
ich habe folgendes Problem: Ich möchte Daten aus einer Datei mit Hilfe von FileReader und BufferedReader zeilenweise einlesen. Dabei möchte ich in der Datei mit Tags ( in [] eingefasst ) arbeiten. Es soll also erkannt werden ob ein [tag] (oder anderer Name) irgentwo steht und die darauf folgenden Zeilen verarbeitet werden. Das Problem ist, dass das Programm trotz identischer Strings (mit Debugger getestet) die if-Abfragen überspringt. Hier mein Code:
Java:
import java.io.*;

public class BufferedRdr 
{
	public static void main(String[] args) 
	{
		BufferedReader f;
		String str;
		
		try
		{
			f = new BufferedReader(new FileReader("SMS1.txt"));
			
			while((str=f.readLine()) != null)
			{
				
				if(str=="[Message]")
				{
					str=f.readLine();
					System.out.println("Nachricht: " + str);
				}
				
				if(str=="[Contact]")
				{
					str=f.readLine();
					System.out.println("Kontaktname: " + str);
					
					str=f.readLine();
					System.out.println("Kontaktnummer: " + str);
				}
				
				if(str=="[DATE]")
				{
					str=f.readLine();
					System.out.println("Datum: -");
				}
			}
			
			f.close(); 
		}
		
		catch(IOException e)
		{
			System.out.println("Fehler beim lesen der Datei!");
		}
	}
}

Dazu noch der Inhalt der einzulesenden Datei:

Code:
[Message]
Hallo hier bin ich!
[Contact]
Steffan Helmke
042839988
[DATE]

Wenn ich mit den Zeilennummern von LineNumberReader arbeite funktioniert es, aber ich will das man die tags in der Reihenfolge vertauschen kann und das leere Zeilen dazwischen sein können.
Ich vermute das es etwas mit der Konvertierunt zwischen String und Byte-Streams zu tun hat, aber ich kann mir echt nicht erklären was!

Freu mich auf die Antworten!
Gruß
Nutella
 

dehlen

Bekanntes Mitglied
Strings vergleicht man mit equals nicht mit ==
also
Java:
if(str.equals("[Message]") {}
 

California

Aktives Mitglied
Noch eine Anmerkung:

wenn Du den Vergleich mit der Konstante beginnst, kann das Variable Argument auch null sein, ohne dass es knallt:

Java:
if ("Wert".equals( str )) {
}

.. habe ich mir so angewöhnt, auch z.B.

Java:
if (0 == i) {
}

ist im ersten Moment gewöhnungsbedürftig, aber leichter zu lesen...
 

njans

Top Contributor
Noch eine Anmerkung:

wenn Du den Vergleich mit der Konstante beginnst, kann das Variable Argument auch null sein, ohne dass es knallt:

Das ist sicherlich richtig, aber wenn an der Stelle niemals null auftreten soll, dann ist da eine geworfene NPE schon besser, als ein durchlaufendes Programm welches falsche Werte ausgibt oder eine NPE die später erst zündet und dann zurückverfolgt wird.
Nur um die Aussage zu relativieren.
 

California

Aktives Mitglied
@Njans:
völlig richtig, das ist nur sinnvoll, wenn der String null sein darf.
sonst muss man natürlich auf null testen und den Caller mit einer Exception bewerfen.
Schlampig von mir...

Ich beginne trotzdem alle Identitätsvergleiche (==, !=, .equals) mit dem konstanten Wert, würde bei mir auch so aussehen:
Code:
 if (null == text)
habe ich mir in C angewöhnt (grins...)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Neumi5694 double Vergleich Allgemeine Java-Themen 19
M Vergleich C# und Java Allgemeine Java-Themen 24
D Vergleich OracleJDK/OpenJDK Allgemeine Java-Themen 7
T Komplexitätsoptimierung String vergleich Allgemeine Java-Themen 4
T If Vergleich ergibt nicht das richtige Ergebnis Allgemeine Java-Themen 2
K Vergleich von Strings von Objekten Allgemeine Java-Themen 4
E Problem mit Array vergleich Allgemeine Java-Themen 4
M Vergleich (unscharf) von Screenshots Allgemeine Java-Themen 0
L Vergleich-Xml-Daten Allgemeine Java-Themen 3
S BufferedImage vergleich mit Subimage Allgemeine Java-Themen 1
Z Vergleich zwischen int und Object Allgemeine Java-Themen 1
M Datums vergleich klappt überhaupt nicht.. Allgemeine Java-Themen 4
S Calendar vergleich Allgemeine Java-Themen 2
G Zeilenweiser Vergleich Allgemeine Java-Themen 10
E Vorschläge, effizientes Hashing von Dateien für vergleich Allgemeine Java-Themen 7
W Vergleich eines Datenträgers auf neue Dateien Allgemeine Java-Themen 14
C Vergleich von Enums gibt inkorrekte Werte Allgemeine Java-Themen 6
N Vergleich eigener Klassen Allgemeine Java-Themen 5
P J-Unit vergleich von 2 Objekten merkwürdig Allgemeine Java-Themen 7
K GUI-Button Inhalte vergleich - TicTacToe Grundriss Allgemeine Java-Themen 11
N Vergleich von generischen Typen Allgemeine Java-Themen 2
S String-Vergleich in if Allgemeine Java-Themen 7
P JNA - JNI - pures Java - Vergleich Allgemeine Java-Themen 6
I Vergleich zweier Felder Allgemeine Java-Themen 3
M Vergleich von TreeSet<HashSet>^2 Allgemeine Java-Themen 8
F Vergleich zweier Listen Allgemeine Java-Themen 4
U Java Performance im Vergleich zu C++ in speziellem Anwendungsfall Allgemeine Java-Themen 6
D Was ist schneller? Zuweisung oder Vergleich? Allgemeine Java-Themen 18
O String NICHT vergleich Allgemeine Java-Themen 7
G Vergleich von .jpg Dateien Allgemeine Java-Themen 2
I vergleich und zählen von Strings Allgemeine Java-Themen 7
K Vergleich von Icons . Allgemeine Java-Themen 8
N vergleich mit while und for schleife Allgemeine Java-Themen 7
M Vergleich im geordeten Vector und Methodenaufruf Allgemeine Java-Themen 2
minzel String in String (Vergleich) Allgemeine Java-Themen 2
J vergleich zweier datenstrukturen Allgemeine Java-Themen 6
P Vergleich: Java - .net Allgemeine Java-Themen 5
T Vergleich von Tastatureingabe mit dem was in der Datei steht Allgemeine Java-Themen 21
N Split -> IF-String vergleich Allgemeine Java-Themen 5
N Vergleich zweier Hashtable / mehrere Enumerations Allgemeine Java-Themen 7
C Performance Vergleich, Java vs. Tcl/Tk Allgemeine Java-Themen 3
B bit vergleich oder regex Allgemeine Java-Themen 1
O regulärer Ausdruck zum durchsuchen eines Strings verwenden Allgemeine Java-Themen 2
B HeapSort für Array of Strings funktioniert nur teilweise Allgemeine Java-Themen 3
W JSON parsen eines ,mit JS.stringify erstellten Strings Allgemeine Java-Themen 27
L allgemein Strings händisch in Liste sortieren Allgemeine Java-Themen 47
N MySQL mit Strings Allgemeine Java-Themen 3
T Letztes Zeichen eines Strings enfernen Allgemeine Java-Themen 14
P Strings: equals vs == Allgemeine Java-Themen 47
G Objekte mit Strings Aufrufen Allgemeine Java-Themen 8
W Collections Suche Collection, um Strings mit Indizees versehen Allgemeine Java-Themen 47
V Datentypen Graphikrechner 2/Strings und Variablen in Doubles umwandeln Allgemeine Java-Themen 6
LimDul Mittels Streams aus Strings A B C den String A, B und C machen Allgemeine Java-Themen 12
Meeresgott Best Practice Strings auf Inhalte vergleichen Allgemeine Java-Themen 1
N DNA Strings vergleichen Allgemeine Java-Themen 1
Q-bert Strings aus der JList in eine Datenbank speichern Allgemeine Java-Themen 1
J Strings int textdokumente speicher Allgemeine Java-Themen 3
KeVoZ_ Nacheinander folgende Strings in Textdokument auf neue Zeile schreiben Allgemeine Java-Themen 6
K Strings sortieren: 2 Kritieren Allgemeine Java-Themen 5
A Vector Strings in Array splitten Allgemeine Java-Themen 6
B Wie vergleiche ich Strings in einer Liste? Allgemeine Java-Themen 5
T Strings über Bluetooth zwischen PC,µc oder Samrtphone senden und empfangen Allgemeine Java-Themen 0
N Methoden Methoden einer Klasse auf Grundlage eines Strings aufrufen Allgemeine Java-Themen 6
K Bestimmten Bereich eines Strings lesen Allgemeine Java-Themen 6
H RegularExpression zwischen zwei Strings Allgemeine Java-Themen 2
Neumi5694 Operatoren regEx für das Erstellen eines Strings verwenden Allgemeine Java-Themen 3
H Strings vergleichen Allgemeine Java-Themen 9
O Mustererkennung in Strings Allgemeine Java-Themen 4
Y String-Collection: längste gemeinsame Strings / Prefixe Allgemeine Java-Themen 3
F Problem mit Strings Allgemeine Java-Themen 8
D Strings chemisch splitten Allgemeine Java-Themen 3
K Wörter in Strings zählen Allgemeine Java-Themen 7
L Strings nach sortiertem String zurück ordnen Allgemeine Java-Themen 0
L Strings nach gleichem Muster ordnen Allgemeine Java-Themen 4
L Fragen für Facharbeit: Analyse von Strings in Java Allgemeine Java-Themen 4
D Strings vergleichen; Komma ignorieren Allgemeine Java-Themen 3
K Java Operatoren mit Strings darstellen Allgemeine Java-Themen 8
G Strings erzeugen Allgemeine Java-Themen 20
B HTML Tags in Strings umwandeln Allgemeine Java-Themen 4
U Große Liste von Strings mit indiziertem Zugriff Allgemeine Java-Themen 31
A ,,Textformatierungsbefehle" für strings deaktivieren Allgemeine Java-Themen 8
S Strings vergleichen Allgemeine Java-Themen 11
C Strings in Excel einlesen! Allgemeine Java-Themen 2
S Strings gehen "kaputt" wenn ich in CVS ein und wieder auschecke. Allgemeine Java-Themen 2
X Datentypen Prozentualer Abgleich zwischen 2 Strings (Pattern?) Allgemeine Java-Themen 3
R MD5-Hash eines Strings bestimmen Allgemeine Java-Themen 2
C Strings und JSON Objekte so klein wie möglich im Speicher ablegen Allgemeine Java-Themen 5
J String zerlegen in einzelne Strings Allgemeine Java-Themen 7
F Konstanten mir Strings "verknuepfen" Allgemeine Java-Themen 10
1 zwei Strings vergleichen Allgemeine Java-Themen 16
L Object Instanz anhand eines Strings Allgemeine Java-Themen 10
S vector & strings Allgemeine Java-Themen 26
N Strings mit null wiedergabe Splitten Allgemeine Java-Themen 4
K Strings sortieren (knifflig) Allgemeine Java-Themen 7
P Codierung der strings umändern Allgemeine Java-Themen 10
N Zahlen in Strings einer ArrayList sortieren Allgemeine Java-Themen 14
F 2 Strings zusammenfügen Allgemeine Java-Themen 2
D Strings von HTML befreien Allgemeine Java-Themen 17
S Strings zu Color-Instanzen parsen? Allgemeine Java-Themen 7
C Strings zwischen 2 Zeichen auslesen Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben