Register for your free account! | Forgot your password?

Go Back   elitepvpers Coders Den Java
You last visited: Today at 08:35

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Lesen aus .txt und vergleichen

Discussion on Lesen aus .txt und vergleichen within the Java forum part of the Coders Den category.

Reply
 
Old   #1
 
EinfachSö's Avatar
 
elite*gold: 76
Join Date: Jun 2012
Posts: 1,043
Received Thanks: 216
Lesen aus .txt und vergleichen

Hallo,

Ich habe ein kleines Funktionalitätsproblem.

Ich habe eine .txt-Datei, in der zeilenweise "true" oder "false" steht.
Nun möchte ich in einer Methode diese Zeilen auslesen. Wenn in Zeile x "true" steht soll xy gemacht werden. Wenn dort "false" steht etwas anderes.
Hier meine Herangehensweise:

Code:
for(int i = 0; i < number; ++i) //Zeilen bis hin zu der gewünschten werden ignoriert.
	br.readLine();
	String lineIWant = br.readLine(); //Ausgabe der Zeile, die gewünscht ist!
	br.close();
			
	// In .txt-Datei steht ob Zahl =prim oder nicht. Falls ja, dann gib true zurück. Andernfalls false!!!
	lineIWant = lineIWant.replace("\n", ""); //Befürchtung: Zeilenumbruch ist das Problem!
	setReturn(lineIWant);
Die Methode "setReturn" überprüft die Zeile nun auf den Inhalt.
Code:
public void setReturn(String line)
	{
		if (line == "true")
		{
			returnvar = true;
		}
		else
		{
			returnvar = false;
		}
	}
Mein Bedenken ist, dass ich so auch den Zeilenumbruch mitlese. Ich habe die.trim()-Methode probiert oder wie oben die replace()-Methode.
Auch if (line == "true\n") funktioniert nicht wie gewünscht.
Es wird immer "false" returned.

Aufbau der Text-Datei (Beispiel):
Code:
false
true
true
false
true
false
true
false
false
false
true
false
true
false
false
false
true
false
true
Wie kann ich das Problem lösen. Oder gibt es einfachere Wege dies zu lösen?
Ich habe der Übersicht halber den restlichen Code weggelassen. Ich weiß, dass das Problem bei der Überprüfung per if-Schleife liegt.

Got it!

Code:
public void setReturn(String line)
{
	Boolean boolean1 = Boolean.valueOf(line);
	if (boolean1)
	{
		returnvar = true;
	}
	else
	{
		returnvar = false;
	}
}
EinfachSö is offline  
Old   #2
 
Zunft's Avatar
 
elite*gold: 0
Join Date: Mar 2013
Posts: 3,185
Received Thanks: 1,317
Quote:
Originally Posted by EinfachSö View Post
Code:
public void setReturn(String line)
	{
		if (line == "true")
		{
			returnvar = true;
		}
		else
		{
			returnvar = false;
		}
	}
Für die Zukunft (Die Lösung hast du ja schon):

Strings werden in Java nicht mit '==' verglichen. Dann nutzt du entweder:

Code:
if(s.equals("false"))
oder um die Gefahr von eingelesenen zusätzlichen Leerzeichen, Zeilenumbrüchen, etc. zu umgehen:

Code:
if(s.contains("false"))
Quote:
Originally Posted by EinfachSö View Post
Ich weiß, dass das Problem bei der Überprüfung per if-Schleife liegt.
Dafür müsstest du mir jetzt eigentlich all dein e*Gold als Strafe geben.
Zunft is offline  
Old   #3

 
snow's Avatar
 
elite*gold: 724
Join Date: Mar 2011
Posts: 10,478
Received Thanks: 3,318
Code:
	Boolean boolean1 = Boolean.valueOf(line);
	if (boolean1)
	{
		returnvar = true;
	}
	else
	{
		returnvar = false;
	}
Warum nicht

Code:
returnvar = Boolean.valueOf(line);
?
snow is offline  
Old   #4
 
EinfachSö's Avatar
 
elite*gold: 76
Join Date: Jun 2012
Posts: 1,043
Received Thanks: 216
Danke beiden!
@Zunft Hätte mir früher auffallen müssen.

Quote:
Originally Posted by snow View Post
Warum nicht

Code:
returnvar = Boolean.valueOf(line);
?
Logisch.
Wald vor lauter Bäumen...



Ganz nebenbei noch eine Frage.
Ich habe die Deklaration der Variablen in eine extra Methode packen müssen, weil es nach der for-Schleife nicht funktioniert hat.
Die for-Schleife und der kleine Rest dahinter befindet sich ein einem try-Block. Kann ich den Schritt mit einer seperaten Methode umgehen? Also, dass ich "returnvar" direkt im try-Block deklariere?

Ganzer Code:

Diese Fälle wurden in meinem Tutorial nie erwähnt.

Quote:
Originally Posted by Zunft View Post
Dafür müsstest du mir jetzt eigentlich all dein e*Gold als Strafe geben.
nicht nachgedacht...
EinfachSö is offline  
Old   #5
 
Zunft's Avatar
 
elite*gold: 0
Join Date: Mar 2013
Posts: 3,185
Received Thanks: 1,317
Du kannst dir die ganze returnvar-Variable sparen:

Code:
public boolean setReturn(String line)
	{
		return Boolean.valueOf(line);
	}
bzw

Code:
setReturn(lineIWant);
ersetzen mit:

Code:
return setReturn(lineIWant);
Quote:
Diese Fälle wurden in meinem Tutorial nie erwähnt.
Zunft is offline  
Old   #6
 
EinfachSö's Avatar
 
elite*gold: 76
Join Date: Jun 2012
Posts: 1,043
Received Thanks: 216
Quote:
Originally Posted by Zunft View Post
Du kannst dir die ganze returnvar-Variable sparen:

Code:
public boolean setReturn(String line)
	{
		return Boolean.valueOf(line);
	}
bzw

Code:
setReturn(lineIWant);
ersetzen mit:

Code:
return setReturn(lineIWant);


Das Problem ist aber, wenn Ich:
Code:
return setReturn(lineIWant);
benutze, dann entweder im try-Block oder dahinter.
Meinen ganzen Code habe ich im vorherigen Post ja gespoilert.
Wenn ich es im try-Block nutze, dann bekommt meine Class "CheckNumIfPrimeBoolean" einen Error. ("This method must return a result of type boolean").
Packe Ich deinen return-Befehl hinter den try-Block, so hat meine Class zwar einen return aber "lineIWant cant be resolved to a variable". lineIWant ist ja lokal im try-Block deklariert.
EinfachSö is offline  
Old   #7
 
Zunft's Avatar
 
elite*gold: 0
Join Date: Mar 2013
Posts: 3,185
Received Thanks: 1,317
In dem Fall würde ich es genauso wie du lösen. Die boolesche Variable global bzw. vor dem betreffenden Block deklarieren.
Zunft is offline  
Reply


Similar Threads Similar Threads
Textbox mit .txt vergleichen
08/25/2013 - .NET Languages - 1 Replies
Hi Freunde und zwar habe ich folgendes Problem: Ich habe eine textdatei die eine reihe von Bergrüßungen enthält. Und zwar möchte ich prüfen ob z.B. Textbox1.Text eine oder mehrere Bergrüßungen aus der Textdatei enthält Bsp Begrüßungen: hi hallo yo Text:
[SQL]2 Spalten vergleichen
05/28/2012 - General Coding - 2 Replies
Guten Morgen, ich habe in einer Tabelle 2 Spalten time verfall nun möchte ich mir alle Einträge suchen, bei denen die Spalte "time" >= die Spalte "verfall" ist.
[C++]String vergleichen
08/05/2010 - C/C++ - 5 Replies
Hallo! Wie kann ich von dem string: den wert in einer if abfrage ermittelen? also in level steht z.B. 99 Und ich möchte das er über eine if abfrage ermittelt ob die zahl 99 ist. Also so in der Art: Hoffe ihr könnt mir helfen



All times are GMT +2. The time now is 08:35.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.