# String in boolean umwandeln



## wojtek (16. Jul 2009)

Hallo
ich würde gerne einen String aus einer datei in einen Boolean umwandeln.
Probiert habe ich schon:

```
boolean hilfe = Boolean.getBoolean(in.readLine());
```

aber es geht einfach nicht, es kommt immer false raus!

und Boolean.parseBoolean()  streicht er mir auch immer rot an


----------



## SlaterB (16. Jul 2009)

wahrscheinlich steht in in.readLine() mal "3", mal "hallo", und auch mal "Obama", 
in jedem Falle finde ich das Ergebnis false gerechtfertigt,
warum sollte je true rauskommen?

oder möchtest du vielleicht doch nähere Angaben machen, was denn in der Datei drinsteht?


----------



## diggaa1984 (16. Jul 2009)

selbiges Leiden hatte ich auch vor kurzem: Lösung


----------



## wojtek (16. Jul 2009)

es steht entweder true oder false drin !


----------



## angelchr (16. Jul 2009)

hallo,

was macht das für einen Sinn??? String sind was weiß ich wieviel Zeichen und Boolean hat gerade mal true false?
Willst du vielleicht: Falls String != null => true else false ???
Erklär doch mal was du damit machen willst.


----------



## MrWhy (16. Jul 2009)

Hi,

hast du schon


```
boolean hilfe = Boolean.parseBoolean("true");
```

ausprobiert?



```
boolean hilfe = Boolean.parseBoolean(true);
```

wäre falsch...

Grüße

Mr.


----------



## diggaa1984 (16. Jul 2009)

hilfe denkt ihr kompliziert


----------



## wojtek (16. Jul 2009)

ich lese aus einer Datei sachen aus.

es kommt dabei der string true oder false raus (kann ich ja mit println anzeigen)


----------



## MrWhy (16. Jul 2009)

Sind noch andere Zeichen im String? (Leerzeichen o.ä.?)


----------



## wojtek (16. Jul 2009)

das weiß ich nicht, in einer zeile steht entweder true oder false und ich lese mit readLine


----------



## SlaterB (16. Jul 2009)

http://www.java-forum.org/java-basi...5800-string-boolean-umwandeln.html#post537171


----------



## MrWhy (16. Jul 2009)

Hmm dann würd ich das mal prüfen... Slater hat dir ja auch schon den Link geschrieben in dem auch die Lösung drin steht. Denn es wird nur true wenn der Input nichts anderes ist als true. Wobei true groß und klein sowie gemixt (cases) geschrieben werden kann. Sobald z.B. ein Leerzeichen dabei ist wird es false...

P.S. hättest du die Beiträge aufmerksam gelesen, hätte SlaterB dir nicht einen Link mit Verweis auf einen Beitrag in diesem Thread geschickt 


Edit: Wenn du in einer Zeile entweder True oder False stehen hast würd ich mal schauen ob er das /n mit ausliest.


----------



## wojtek (16. Jul 2009)

> Wenn ein Leerzeichen am Anfang oder am Ende ist,
> wird es false.
> Das Problem hatte ich auch schonmal als ich ein String mit den Wert false oder true
> aus einer Datenbank gezogen habe



und wie kann ich das Problem lösen ?

wie kann ich sicherstellen dass nur true oder false ausgelesen wird ?


----------



## angelchr (16. Jul 2009)

jetzt wirds Tag


----------



## diggaa1984 (16. Jul 2009)

wojtek hat gesagt.:


> und wie kann ich das Problem lösen ?
> 
> wie kann ich sicherstellen dass nur true oder false ausgelesen wird ?



mal weiter oben nachschauen ^^ entweder auf slaters Link klicken oder bis zu nem Link names "Lösung" scrollen und vorsichtshalber ein .trim() am eingelesenen String aufrufen und diesen dann umwandeln 

manchmal passiert es ja, das man was schreibt und in der zwischenzeit neue beiträge erschienen sind und man es nicht mitbekommt


----------



## MiDniGG (16. Jul 2009)

wojtek hat gesagt.:


> und wie kann ich das Problem lösen ?
> 
> wie kann ich sicherstellen dass nur true oder false ausgelesen wird ?



Hm. Gar nicht... Um Leerzeichen zu kürzen kannst Du String#trim() machen. Ansonsten könntest Du mit String#contains prüfen ob true bzw. false enthalten ist und dann eben den zu verwendenden String auf "true" oder "adösfklöj" bzw. "false" setzen 

cya


----------



## wojtek (16. Jul 2009)

trim und danach getBoolean bringt auch nichts

Wieso wird mir eingentlich nicht Boolean.parseBoolean angeboten???
nur getBoolean wird angeboten
muss ich dafür noch was einbinden?


----------



## SlaterB (16. Jul 2009)

sollte ohne Imports laufen:

```
public class Test
{
    public static void main(String[] args)
    {
        boolean hilfe = Boolean.parseBoolean("true");
        System.out.println(hilfe);


    }

}
```


----------



## Der Müde Joe (16. Jul 2009)

>Wieso wird mir eingentlich nicht Boolean.parseBoolean angeboten???

Java < 1.5


----------



## MiDniGG (16. Jul 2009)

wojtek hat gesagt.:


> Wieso wird mir eingentlich nicht Boolean.parseBoolean angeboten???



Boolean#parseBoolean gibts erst ab JDK Version 1.5... Vllt hast Du ja die 1.4er oder älter...

Kannst Dir ja den String mal ausgeben lassen... am Besten mit begrenzer...

```
System.out.println("-" + in.readLine() + "-");
```
Dann siehst schonmal ob Leerzeichen drin stehen und was überhaupt übergeben wird...


----------



## wojtek (16. Jul 2009)

hab ich schon gemacht, wenn true sagt er es sind 4 zeichen und 5 bei false !


----------



## Leroy42 (16. Jul 2009)

wojtek hat gesagt.:


> und danach getBoolean bringt auch nichts


Kein Wunder denn die Methode getBoolean() hat eine völlig andere Bedeutung:



> getBoolean
> public static boolean getBoolean(String name)
> Returns true if and only if the system property named by the argument exists and is equal to the string "true". (Beginning with version 1.0.2 of the JavaTM platform, the test of this string is case insensitive.) A system property is accessible through getProperty, a method defined by the System class.



Boolean (Java 2 Platform SE v1.4.2)


----------



## MiDniGG (16. Jul 2009)

Leroy42 hat gesagt.:


> Kein Wunder denn die Methode getBoolean() hat eine völlig andere Bedeutung...[/url]



Also doch Boolean#valueOf(String s);



> Returns a Boolean with a value represented by the specified String. The Boolean returned represents the value true if the string argument is not null  and is equal, ignoring case, to the string "true".
> 
> Example: Boolean.valueOf("True") returns true.
> Example: Boolean.valueOf("yes") returns false.



so wie schon öfter erwähnt, oder?! ^^


----------



## Noctarius (16. Jul 2009)

Boolean.parseBoolean(String)


----------



## MiDniGG (16. Jul 2009)

Noctarius hat gesagt.:


> Boolean.parseBoolean(String)



Aber eben erst ab 1.5 und er hat ja anscheinend eine ältere Version


----------



## Der Müde Joe (16. Jul 2009)

Noctarius hat gesagt.:


> Boolean.parseBoolean(String)



darüber sind wir schon hinweg


----------



## wojtek (16. Jul 2009)

joa das neue 1.5 hab ich jetzt draufgemacht, jetzt muss ich es wohl im jbuilder umstellen


----------



## MiDniGG (16. Jul 2009)

wojtek hat gesagt.:


> joa das neue 1.5 hab ich jetzt draufgemacht, jetzt muss ich es wohl im jbuilder umstellen



lol? Wieso nimmst Du denn nicht einfach valueOf() ???


----------



## diggaa1984 (16. Jul 2009)

warum nicht gleich 1.6


----------



## Der Müde Joe (16. Jul 2009)

>joa das neue 1.5

naja...neu... (aktuell 1.6)


----------



## wojtek (16. Jul 2009)

toll, jetzt hab ich auf 1.5 oder 1.6 umgestellte und jetzt läuft ganichts mehr ! viele sachen sind rot angestrichen die vorher richtig waren


----------



## MiDniGG (16. Jul 2009)

wojtek hat gesagt.:


> toll, jetzt hab ich auf 1.5 oder 1.6 umgestellte und jetzt läuft ganichts mehr ! viele sachen sind rot angestrichen die vorher richtig waren



Ist das JDK auch bekannt? Steht es in den Umgebungsvariablen (unter Windows)?
Kenn mich leider mit JBuilder nicht so gut aus... Von dem her kann ich Dir in dem Punkt wenig weiterhelfen...

Wobei ich ja immer noch dafür bin alles zu lassen und nur auf valueOf umzusteigen


----------



## Leroy42 (16. Jul 2009)

wojtek hat gesagt.:


> viele sachen sind rot angestrichen die vorher richtig waren



Und was sind dazu die entsprechenden Fehlermeldungen?

Nur die Info das "Sachen rot angestrichen wurden"
hilft uns nicht wirklich weiter!


----------



## wojtek (16. Jul 2009)

MiDniGG hat gesagt.:


> uilder nicht so gut aus... Von dem her kann ich Dir in dem Punkt wenig weiterhelfen...
> 
> Wobei ich ja immer noch dafür bin alles zu lassen und nur auf valueOf umzusteigen


valueOf geht ja auch nicht :-(


----------



## diggaa1984 (16. Jul 2009)

dann liegt das problem vermutlich noch ganz woanders? ... kannst du mal ein KSKB posten in dem das verhalten sichtbar wird? am besten gleich n auszug aus der bsp-datei dazu


----------



## Der Müde Joe (16. Jul 2009)

>valueOf geht ja auch nicht

Alle JDKs deinstallieren.
JDK 1.6 laden
JBuilder verfluchen und aus dem Fenster schmeissen.
Einen Text-Editor deiner Wahl nehmen (scite,....)
und von Hand auf der Kommandozeile kompilieren


----------



## diggaa1984 (16. Jul 2009)

Der Müde Joe hat gesagt.:


> >valueOf geht ja auch nicht
> 
> Alle JDKs deinstallieren.
> JDK 1.6 laden
> ...



smiley mit blauem auge dahinter einer der lacht ...  smileys kaputt?


----------



## wojtek (16. Jul 2009)

so ich hab jetzt:
String hilfe = in.readLine();
boolean hilfe2 = Boolean.valueOf(hilfe)      hier kommt ne fehlermeldung: inkompatible type benötigt bool


----------



## diggaa1984 (16. Jul 2009)

wojtek hat gesagt.:


> so ich hab jetzt:
> String hilfe = in.readLine();
> boolean hilfe2 = Boolean.valueOf(hilfe)      hier kommt ne fehlermeldung: inkompatible type benötigt bool



mach doch mal:
Boolean hilfe2 = ...

Boolean-API:
public static Boolean valueOf(String s)

merke: boolean != Boolean


----------



## wojtek (16. Jul 2009)

```
String hilfsString = in.readLine();
Boolean hilfe = Boolean.valueOf(hilfsString);
MeinBuch[i].setStatus(hilfe);[/JAvA]

ich vestehe nicht genau was ich machen soll
jetzt hat aber setStatus nen Problem, dass es keinen bool bekommt
```


----------



## Der Müde Joe (16. Jul 2009)

boolean bla = hilfe.booleanValue();

EDIT:
ab 1.5 wird boolean, Boolean auto-geboxed...sprich automatisch konvertiert. so neben bei


----------



## Civilazi (16. Jul 2009)

Also selbst wenn alle Stränge reißen, was ist denn einfach mit 
String bla = aus Datei;
bla.toLowerCase().equals("true");?


----------



## diggaa1984 (16. Jul 2009)

dann doch lieber umwandeln lassen und das Boolean notfalls in boolean casten  ... aber Joe's Vorschlag wäre da zu präferieren .. der Umweg über Boolean ist da nich nötig


----------



## wojtek (16. Jul 2009)

ich glaube ich bin zu blöd dafür, ich bekomme es einfach nicht hin 

kann mir das jemand grad in den quelltext einbauen?


```
String hilfsString = in.readLine();
      Boolean hilfe = Boolean.getBoolean(hilfsString);
      MeinBuch[i].setStatus(hilfe);
```


booleanValue() wird mir nach dem punktoperator nicht angeboten


----------



## wojtek (16. Jul 2009)

Civilazi hat gesagt.:


> Also selbst wenn alle Stränge reißen, was ist denn einfach mit
> String bla = aus Datei;
> bla.toLowerCase().equals("true");?




DANKE, genau so hab ich es jetzt gemacht und es funktioniert wunderbar


----------

