Wo ist mein Fehler in der if-Abfrage?

  • Antworten:12
  • Bentwortet
Ludwig H.
  • Forum-Beiträge: 3.256

20.04.2011, 12:19:23 via Website

Hi,

Ich hab das Problem, dass bei dieser If-Abfrage der String state nicht initialisiert wird. Aber warum?
1String state;
2
3 //state setzen
4 if ( a > 19 && a < 24 ) { //Wenn die Variable a zwischen 19 und 24 liegt
5 state = "textteil mitte";
6 }
7 else {
8 if ( a < 19 ) { //Wenn die Variable a unter 19 liegt
9 state = "textteil unten";
10 }
11 else
12 if ( a > 24 ) { //Wenn die Variable a über 24 liegt
13 state = "textteil oben";
14 }
15 }
16
17//Wenn ich z.b. hier die Variable state mit state = "textteil mitte"; manuell initialisiere geht es.
18
19 //Beschreibung setzen
20 TextView description = (TextView) findViewById(R.id.description);
21 description.setText("Hier ist noch etwas Text " + state + "."); //Hier meckert eclipse, dass die Variable nicht initialisiert wurde

Wo liegt da der Fehler?
Steh glaube ich gerade etwas auf dem Schlauch...

lg und danke
Ludwig

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

20.04.2011, 12:26:22 via Website

Weil die Initialisierung des Strings bereits vor der If Abfrage passieren sollte!

Schreibe anstelle von:

String state;

String state = "";

Damit ist die Variable initialisiert.

lg Voss

Ludwig H.

Antworten
Ludwig H.
  • Forum-Beiträge: 3.256

20.04.2011, 12:28:56 via Website

Danke, funktioniert. :grin:
Immer so kleine Fehler :*)

Antworten
Maximilian O
  • Forum-Beiträge: 990

21.04.2011, 17:09:53 via Website

Ich glaube, damit es übersichtlicher bleibt kannst du statt:
if(var1 ....){}
else
{
if(var2....){}
};

lieber mit else if arbieten
if(var1 ....){}
else if(var1 ....){}
else if(var1 ....){}

So hast du alles auf einer Ebene, ist aber deine Entscheidung.
MfG

Vergiss nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag - Birthdays Download

Antworten
Ludwig H.
  • Forum-Beiträge: 3.256

21.04.2011, 17:38:22 via Website

Danke, hab mir auch zwischenzeitlich überlegt es mit einer case Abfrage zu machen, aber jetzt muss erst mal alles so laufen, dann gehts an die "Schönheitsfehler" ;)

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

21.04.2011, 19:38:38 via Website

Die Frage wäre ja auch, was macht Deine App, wenn a = 19 oder a = 24 ist ??

Nur so der Vollständigkeit halber...

— geändert am 21.04.2011, 19:39:38

lg Voss

Leo K.

Antworten
Ludwig H.
  • Forum-Beiträge: 3.256

21.04.2011, 23:04:38 via App

naja, sie vergleicht quasi den wert von a 1. ob er zwischen 19 und 24 liegt, 2. ob er kleiner 19 ist und 3. ob er über 24 liegt (das lässt sich bestimmt noch schöner lösen...). Je nachdem teilt er dem String dann eine Zeichenkette zu...

Antworten
Gelöschter Account
  • Forum-Beiträge: 294

21.04.2011, 23:23:11 via Website

Voss fragte was passiert wenn a exakt 19 oder exakt 24 ist. Diese beiden Werte ignorierst Du komplett und sie werden zu einem Leer-String führen.

Wenn das so geplant ist - auch gut ;-)

Guß
Harald

Ludwig H.

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

21.04.2011, 23:25:38 via Website

Du hast die Frage nicht verstanden ..

Wenn a den Wert 19 oder 24 annimmt wird keine der Bedingungen erfüllt

Die beiden Werte 19 und 24 werden von Deinen Bedingungen nicht erfasst!

lg Voss

Ludwig H.

Antworten
Ludwig H.
  • Forum-Beiträge: 3.256

21.04.2011, 23:32:02 via Website

Oh, Danke. Da hab ich garnicht mehr dran gedacht. Leichtsinnsfehler :*)

14 if ( a > 18 && a < 25 ) { //Wenn die Variable a zwischen 19 und 24 liegt
2 state = "textteil mitte";
3 }
4 else {
5 if ( a < 19 ) { //Wenn die Variable a unter 19 liegt
6 state = "textteil unten";
7 }
8 else
9 if ( a > 24 ) { //Wenn die Variable a über 24 liegt
10 state = "textteil oben";
11 }
12 }
So müsste es gehen, oder?!

— geändert am 21.04.2011, 23:32:15

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

22.04.2011, 07:49:41 via Website

Das geht so ja,

eleganter und einfacher wäre es das so zu machen
1if (a >=19 && a <=24) { .............
2
3// der Rest wäre gleich geblieben

"<=" entspricht "Kleiner oder gleich"

Edit: Fehler korrigiert ;)

— geändert am 22.04.2011, 15:53:44

lg Voss

Antworten
Ludwig H.
  • Forum-Beiträge: 3.256

22.04.2011, 12:38:36 via App

Danke. Ich denke aber du meinst "größer oder gleich" ;)
So hatte ich das mal probiert und eine Fehlermeldung bekommen, ich probiers aber nochmal...

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

22.04.2011, 15:05:00 via App

omg... ja klar grins, hab es gerade korrigiert oben.

— geändert am 22.04.2011, 15:54:00

lg Voss

Antworten