Rückgabe funktioniert nicht!

Status
Nicht offen für weitere Antworten.

MelcomX01

Mitglied
Ich habe eine Methode mit einer verzweigten switch Abfrage geschrieben (2Ebenen).

Nachdem ich die return Anweisung geschrieben und kompiliert hatte,
bekam ich die Meldung:

Code:
unreachable statment

und das in der Zeile, in der die return-Anweisung steht. (Sie kommt direkt nach der switch-Abfrage)
Ich bin mir sicher, das ich alle Anweisungen richtig verkapselt habe. Wenn ich die return-Anweisung weglasse, lässt sich die Klasse ohne Probleme kompilieren, obwohl der Rückgabetyp String ist. Auch die leere Anweisung funktioniert nicht.
Was könnte ich falsch gamcht haben?
 
Hier ist der code:

Code:
public static String wandeln(String eingang, int quellBasis, int zielBasis) throws BasisException, NumberFormatException
    {
        String  ergebnis    = "";
        long    zahlLong    = 0l;
        
        switch (quellBasis)
        {
            case 2:     switch (zielBasis)
                        {
                            case 2:     throw new BasisException(BASIS_GLEICH + quellBasis + " / " + zielBasis);                                        
                                        
                            case 8:     ergebnis = dezimal_oktal(dual_dezimal(eingang));
                                        break;
                            
                            case 10:    ergebnis = "" + dual_dezimal(eingang); //
                                        break;
                                        
                            case 16:    ergebnis = dezimal_hexa(dual_dezimal(eingang));       
                                        break;
                              
                            default:    throw new BasisException(BASIS_FALSCH + zielBasis);   
                        }
            case 8:     switch (zielBasis)
                        {
                            case 2:     ergebnis = dezimal_dual(oktal_dezimal(eingang));
                                        break;
                                        
                            case 8:     throw new BasisException(BASIS_GLEICH + quellBasis + " / " + zielBasis);
                            
                            case 10:    ergebnis = "" + oktal_dezimal(eingang);
                                        break;
                                        
                            case 16:    ergebnis = dezimal_hexa(oktal_dezimal(eingang));
                                        break;
                                        
                            default:    throw new BasisException(BASIS_FALSCH + zielBasis);
                        }
            case 10:    switch (zielBasis)
                        {
                            case 2:     ergebnis = dezimal_dual(eingang);
                                        break;
                                        
                            case 8:     ergebnis = dezimal_oktal(eingang);
                                        break;
                                        
                            case 10:    throw new BasisException(BASIS_GLEICH + quellBasis + " / " + zielBasis);
                                        
                            case 16:    ergebnis = dezimal_hexa(eingang);
                                        break;
                                        
                            default:    throw new BasisException(BASIS_FALSCH + zielBasis);            
                        }            
            case 16:    switch (zielBasis)
                        {
                            case 2:     ergebnis = dezimal_dual(hexa_dezimal(eingang));
                                        break;
                                        
                            case 8:     ergebnis = dezimal_oktal(hexa_dezimal(eingang));
                                        break;
                                        
                            case 10:    ergebnis = "" + hexa_dezimal(eingang);
                                        break;
                                        
                            case 16:    throw new BasisException(BASIS_GLEICH + quellBasis + " / " + zielBasis);
                            
                            default:    throw new BasisException(BASIS_FALSCH + zielBasis);            
                        }
            
            default:    throw new BasisException(BASIS_FALSCH + quellBasis);            
        }        
        return ergebnis;
    }
 
Die Breaks die du einfügst gelten wohl nur für die inneren Switch'es.
Das äussere läuft weiter nachdem ein inneres switch beendet wurde, bis das Default kommt (throw new ...).

Füg nach den inneren switch'es jeweils noch ein "break" ein.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben