else if und return

Status
Nicht offen für weitere Antworten.

Lexi

Bekanntes Mitglied
Ich möchte, je nachdem ob eine, oder die andere Bedingung zutrifft einen Wert zurückgeben.
Wenn ich untenstehenden Code compiliere, sagt er mit ihm fehle ein "return statement".
Was habe ich falsch gemacht und wie muss ich meinen Quelltext abändern, damit ich was zurückgeben kann?

Code:
public String gibString()
    {
        String x = "Hallo";
        String y = "Tschuess";
        String z = "Blubb";
        
        if(false)
        {
            return x;
        }
        
        else if(true)
        {
            return y;
        }
        
        else
        {
            return z;
        }
    }
 

L-ectron-X

Gesperrter Benutzer
Der Code wird auch dann nicht funktionieren, wenn du das Problem gelöst hast.
Du hast nur zwei Zustände, auf die du prüfen willst/kannst. Ja oder Nein. true oder false. Aber du willst einen von drei möglichen Strings zurück geben können...

Die Fehlermeldung bekommst du weg, wenn du den else-Block entfernst und nur return z; schreibst.
Das Ganze bleibt dennoch sinnfrei.
 

Lexi

Bekanntes Mitglied
Dann war das ein blödes Beispiel. Ich poste mal ein Auszug aus meinem Quelltext, dann wirds vllt deutlicher.
Das mit true oder false war ungünstig. Es gibt mehr als 2 Bedingungen in meiner Abfrage.

Code:
public String gibfeldInf()
    {
        if(u.gibxhPos()==0&&u.gibyhPos()==0) 
        {
            feldnr1="120";
            return feldnr1;
        }
        
        else if(u.gibxhPos()==50&&u.gibyhPos()==0)
        {
            feldnr2="220";
            return feldnr2;
        }
        else if(u.gibxhPos()==100&&u.gibyhPos()==0)
        {
            feldnr3="320";
            return feldnr3;
        }
        else if(u.gibxhPos()==150&&u.gibyhPos()==0)
        {
            feldnr4="420";
            return feldnr4;
        }

        //Hier kommen noch weitere Bedingungen
    }
 

L-ectron-X

Gesperrter Benutzer
Code:
public String gibfeldInf() 
    { 
        if(u.gibxhPos()==0&&u.gibyhPos()==0) 
        { 
            feldnr1="120"; 
            return feldnr1; 
        } 
        
        else if(u.gibxhPos()==50&&u.gibyhPos()==0) 
        { 
            feldnr2="220"; 
            return feldnr2; 
        } 
        else if(u.gibxhPos()==100&&u.gibyhPos()==0) 
        { 
            feldnr3="320"; 
            return feldnr3; 
        } 
        else if(u.gibxhPos()==150&&u.gibyhPos()==0) 
        { 
            feldnr4="420"; 
            return feldnr4; 
        } 
        
        return null; //es gibt keine Übereinstimmung
    }

Zur Prüfung der Rückgabe im der Methode/Klasse, die die Rückgabe abholt, sollte jetzt aber auf null geprüft und entsprechend darauf reagiert werden. Sonst kann durch aus eine NullpointerException bei dem Zugriff auf den Rückgabewert geworfen werden.
Möglich wäre auch die Rückgabe eines Leerstrings oder eines Strings mit einem ganz bestimmten Wert.
Aber auch hier sollte das Ergebnis nochmal überprüft werden, damit das Programm nicht mit sinnlosen Werten arbeitet.
 

Marco13

Top Contributor
Der erste Beitrag erinnert mich an http://java-forum.org/de/viewtopic.php?p=266547&highlight= :lol:

Wie auch immer - deutlicher wird's dadurch nicht unbedingt. Wenn die ganzen feldnrX-Variablen Instanzvariablen sind, sieht das sehr schräg aus.

Vermutlich wäre eine Lösung des Problems, ganz am Ende sowas zu machen wie
Code:
....
    System.err.println("Keine Bedinung traf zu!");
    return "UNGÜLTIG"; // Oder so...
}
aber wie gesagt: Insgesamt sieht das ziemlich fragwürdig aus...
 

Lexi

Bekanntes Mitglied
Ich habe jetzt am Ende einfach ein return"" eingefügt und es funktioniert. =)

Dann habe ich jezz eine weitere Frage. Dazu greife ich doch nochmal auf das erste Beispiel zurück, weil das ein wenig allgemeiner ist.

Die Methode gibString() setzt die Variable z auf "Blubb". Danach möchte ich mit der Methode gibz() den Wert von z zurückgeben. Das funktioniert prima.
Jetzt möchte ich aber die gibz() Mehtode in einer anderen Klasse ausführen und ich bekomme "null" zurückgegeben. Das heißt ja das dazwischen irgendwo meine z Variable auf "null" gesetzt wurde, oder ? Wieso ? Und wie verhindere ich das ?


Code:
public class Test
{  
    String x;
    String y;
    String z;
    
    public Test()
    {
    }
    
    public String gibString() 
    { 
        
        if(9==11) 
        { 
            x = "Hallo";
            return x; 
        } 
        
        else if(9==10) 
        { 
            y = "Tschuess"; 
            return y; 
        } 

        else if(9==9)
        {
            z = "Blubb"; 
            return z;
        }
        return "UNGÜLTIG";
    }
    
    public String gibz()
    { return z;}

Code:
public class Test2
{ Test t;
    public Test2()
    {
        t= new Test();
    }

    public void gibzaus()
    {
        String z=t.gibz();
        System.out.println("Das ist z : "+z);
    }
}
 
S

SlaterB

Gast
wahrscheinlich rufst du die Methode an einem anderen Objekt der gleichen Klasse auf,
unterschiedliche Objekte haben unterschiedliche Werte,

das ist kein Bug, sondern ein Feature,
sonst hätten ja alle Person-Objekte in einem Java-Telefonbuch den gleichen Namen und die gleiche Telefonnummer ;)

du musst das fragliche Objekt mitübergeben
 

hdi

Top Contributor
Code:
public void gibzaus()
    {
        // ----------->  t.gibString()  <--------------
        String z=t.gibz();
        System.out.println("Das ist z : "+z);
    }
füg mal die gibString() methode ein wie oben im Code zu sehen. Du initialisiert die Variable "z" der Klasse Test ja gar nicht:

Code:
class Test{

String z; // <- standardmässig "null", wenn man jetzt keinen Wert setzt

//...
}
 

Lexi

Bekanntes Mitglied
SlaterB hat gesagt.:
wahrscheinlich rufst du die Methode an einem anderen Objekt der gleichen Klasse auf,
unterschiedliche Objekte haben unterschiedliche Werte,

das ist kein Bug, sondern ein Feature,
sonst hätten ja alle Person-Objekte in einem Java-Telefonbuch den gleichen Namen und die gleiche Telefonnummer ;)

du musst das fragliche Objekt mitübergeben

Da stehe ich grad ein wenig auf dem Schlauch -.- Wie übergebe ich das Objekt ?

Ein Getter darf niemals Werte setzen, in dieser Form wäre dein Programm katastrophal

d.h. ich sollte daraus 2 Methoden machen? Eine die, die Werte setzt und eine die diese dann abruft ?
 

L-ectron-X

Gesperrter Benutzer
Bei Objekterzeugung sind deine String-Instanzvariablen null, ihnen wird kein Wert zugewiesen.
Wenn du nun auf deiner Test-Referenz gibz() aufrufst, wird der Wert vom nicht initialisiertem String z zurückgegeben.
Wenn z einen Wert haben soll, musst du vorher noch t.gibString() aufrufen.
 

Leroy42

Top Contributor
L-ectron-X hat gesagt.:
Die Fehlermeldung bekommst du weg, wenn du den else-Block entfernst und nur return z; schreibst.

Also statt:

Code:
public String gibString()
    {
        String x = "Hallo";
        String y = "Tschuess";
        String z = "Blubb";
        
        if(false)
        {
            return x;
        }
        
        else if(true)
        {
            return y;
        }
        
        else
        {
            return z;
        }
    }

das schreiben:

Code:
public String gibString()
    {
        String x = "Hallo";
        String y = "Tschuess";
        String z = "Blubb";
        
        if(false)
        {
            return x;
        }
        
        else if(true)
        {
            return y;
        }
        
        else
            return z;
    }

???:L

Wie kommst du denn darauf? :shock:
 

L-ectron-X

Gesperrter Benutzer
@Leroy42: Nee, nicht so!
So:
Code:
public String gibString()
    {
        String x = "Hallo";
        String y = "Tschuess";
        String z = "Blubb";
       
        if(false)
        {
            return x;
        }
       
        else if(true)
        {
            return y;
        }

        return z;
    }
Wobei der Code blöde ist. Hab ich aber oben schon gesagt.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T if-else Bedingung wird ignoriert Java Basics - Anfänger-Themen 4
I If / Else in Setter? Java Basics - Anfänger-Themen 8
M If-Else Java Basics - Anfänger-Themen 5
monsterherz if / else if mit Fehler den ich leider nicht finde Java Basics - Anfänger-Themen 11
laxla123 Verschachtelte If-Else Schleife Java Basics - Anfänger-Themen 21
laxla123 If-else Java Java Basics - Anfänger-Themen 4
luggas89 If else auch mit unterschiedlichen Antworten Java Basics - Anfänger-Themen 5
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
W Verschachtelte If-else --> finde meinen Fehler nicht Java Basics - Anfänger-Themen 30
pumpgun99 Fehler Meldung "else without if" Java Basics - Anfänger-Themen 3
B Scanner-If/else kleine Abhebungs-Simulation Java Basics - Anfänger-Themen 3
A Übung Else if Java Basics - Anfänger-Themen 2
M Else wird nicht ausgeführt. Java Basics - Anfänger-Themen 5
L If und else bei 2 Dimensionalen Arrays Java Basics - Anfänger-Themen 8
F if else if anfängerfrage Java Basics - Anfänger-Themen 22
T if else Befehl funktioniert nicht richtig Java Basics - Anfänger-Themen 27
C Problem mit If Else If und Überprüfung eines Counters Java Basics - Anfänger-Themen 3
T "Einkauf" & if else Struktur Java Basics - Anfänger-Themen 7
steven789hjk543 Input mit if-else Java Basics - Anfänger-Themen 23
H ERGÄNZUNGSFRAGE: Klammersetzung bei if-else Anweisungen und Schleifen Java Basics - Anfänger-Themen 2
A break; mit Einfluss hinter else if Block Java Basics - Anfänger-Themen 3
R else without if error Java Basics - Anfänger-Themen 5
F Methoden Verschachtelte if else Methode Java Basics - Anfänger-Themen 10
M Java Taschenrechner (if-else) Java Basics - Anfänger-Themen 11
C Variablen 'else' without 'if' Java Basics - Anfänger-Themen 4
F If - Else Java Basics - Anfänger-Themen 3
F Variablen If else: Einer Variable einen Wert hinzufügen oder so? Java Basics - Anfänger-Themen 6
I if/else Statements Java Anfänger Java Basics - Anfänger-Themen 14
M jOptionPane mit if else Java Basics - Anfänger-Themen 16
K Frage zu If & else if Java Basics - Anfänger-Themen 5
R else if anweisungen Java Basics - Anfänger-Themen 2
Y Problem mit If-Else Verzweigung! Java Basics - Anfänger-Themen 9
A Warum funktioniert switch aber nicht if/else? Java Basics - Anfänger-Themen 23
Hijo2006 If-else Java Basics - Anfänger-Themen 6
P Erste Schritte Taschenrechner mit if-else Anweisung Java Basics - Anfänger-Themen 6
T If/ Else If (zurückkehren) Java Basics - Anfänger-Themen 4
O Grosse If / Else verschachtelung übersichlitcher gestlten Java Basics - Anfänger-Themen 6
S Erste Schritte Unterschied "if" und "else if" Java Basics - Anfänger-Themen 27
M If in einem else Java Basics - Anfänger-Themen 14
A boolean Methode ohne If und else Java Basics - Anfänger-Themen 1
J Mehrere IF Anweisungen und dazugehörige ELSE Java Basics - Anfänger-Themen 6
C else in if umschreiben Java Basics - Anfänger-Themen 2
J Fehlermeldung else without if Java Basics - Anfänger-Themen 5
P Compiler-Fehler wieso zeigt der compiler ein else without if? Java Basics - Anfänger-Themen 3
E If...else... Java Basics - Anfänger-Themen 7
G Mehrere If-else-Sätze der Reihe nach durchlaufen lassen Java Basics - Anfänger-Themen 2
C If Else Frage Java Basics - Anfänger-Themen 2
M if, else Anweisung Java Basics - Anfänger-Themen 3
J Ergebnis wird gespammt sowie eine else if Frage Java Basics - Anfänger-Themen 2
A instanceof-if-else-Anweisungen eleganter lösen Java Basics - Anfänger-Themen 5
O if and else geht nur manchmal Java Basics - Anfänger-Themen 17
V Operatoren Java if-else argument Java Basics - Anfänger-Themen 4
D Keine Funktion bei "else" Java Basics - Anfänger-Themen 5
P [ANFÄNGER] if else funktioniert nicht Java Basics - Anfänger-Themen 4
T If, else Problem Java Basics - Anfänger-Themen 12
C IF-Else Verknüpfungen Java Basics - Anfänger-Themen 10
Uzi21 if - else Abfrage Java Basics - Anfänger-Themen 6
T Problem im If-Else-Statement Java Basics - Anfänger-Themen 4
R if funktion ohne else - Bedingung trifft nicht zu, ausgabe nicht nachvollziehbar Java Basics - Anfänger-Themen 7
T If ; else error on system token delete Java Basics - Anfänger-Themen 5
N Best Practice Stilistische Anwendung von if/else-Abfragen Java Basics - Anfänger-Themen 7
L else without if Fehler Java Basics - Anfänger-Themen 14
F try/catch - (else) Java Basics - Anfänger-Themen 11
H Worauf bezieht sich die erste else-Anweisung Java Basics - Anfänger-Themen 9
S if und else problem... Java Basics - Anfänger-Themen 13
Q if-else Logikproblem Java Basics - Anfänger-Themen 4
M Probleme mit else if Java Basics - Anfänger-Themen 15
M Erste Schritte Break-Anweisung bei if-else Java Basics - Anfänger-Themen 6
B OOP If und else in Main class einbinden Java Basics - Anfänger-Themen 9
T Erste Schritte switch case Anweisung und if else Verzweigungen? Java Basics - Anfänger-Themen 6
K Bedingungen else Java Basics - Anfänger-Themen 7
B if-else in einer schleife Java Basics - Anfänger-Themen 14
J Erste Schritte If-Else Idee gesucht Java Basics - Anfänger-Themen 6
T if else Java Basics - Anfänger-Themen 8
R boolean, if-else Java Basics - Anfänger-Themen 7
M if then else geht nicht Java Basics - Anfänger-Themen 10
P int-Wertevergleich mit if-else-Verzweigung Java Basics - Anfänger-Themen 3
P If-else-Verzweigung Java Basics - Anfänger-Themen 9
E Compiler-Fehler Fehler: else without if Java Basics - Anfänger-Themen 11
D Java Einsteiger (boolean, if-else etc.) Java Basics - Anfänger-Themen 7
I Methoden Problem If/Else; Public Void Java Basics - Anfänger-Themen 6
P Anzahl der else if Operatoren begrenzt?? Java Basics - Anfänger-Themen 7
K Mal wieder ein Problem mit If / Else Java Basics - Anfänger-Themen 10
K Anfänger If / Else Problem Java Basics - Anfänger-Themen 5
C if else Abfrage Java Basics - Anfänger-Themen 11
T Umschreiben von switch in if else und umgekehrt Java Basics - Anfänger-Themen 9
C Schleifen, if, else......? Java Basics - Anfänger-Themen 8
2 if und else Java Basics - Anfänger-Themen 9
L If/else nicht korrekt ausgeführt. Java Basics - Anfänger-Themen 22
E Verschachtelte If-Anweisungen - "else without if" Java Basics - Anfänger-Themen 4
S Brauche Hilfe bei if/else Java Basics - Anfänger-Themen 3
S if-else Java Basics - Anfänger-Themen 22
A ein if else problem Java Basics - Anfänger-Themen 13
N If-else-If Leiter Java Basics - Anfänger-Themen 9
U Dringend: Syntax error on token "else" Java Basics - Anfänger-Themen 8
L if else anweisung Java Basics - Anfänger-Themen 2
M If/Else mit Zahlenfolge Java Basics - Anfänger-Themen 13
B Problem mit Variable und if/else Java Basics - Anfänger-Themen 6
H alternativen zu if .. else .. Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben