Return String

ehlr

Aktives Mitglied
Hallo,
Möchte einen String Variable returnen.
Leider wird return ausgabe unterkringelt.

Java:
public class game {

	
	public static String wahl(int a) {
		 
		
		if (a == 1) {
			 String ausgabe  = "Stein";
		}
		
		if (a == 2) {
			String ausgabe = "Schere";
		}
		
		if (a == 3) {
			String ausgabe = "Papier";
		}
			

		return ausgabe;
	}
	
	
}
 
Java:
public class game {

	
	public static String wahl(int a) {
		 
		String ausgabe;
		if (a == 1) {
			 ausgabe  = "Stein";
		}
		
		if (a == 2) {
			ausgabe = "Schere";
		}
		
		if (a == 3) {
			ausgabe = "Papier";
		}
			

		return ausgabe;
	}
	
	
}

So müsste es lauten, ansonsten ist ausgabe jeweils nur IN den If-Zweigen bekannt!

[EDIT]Außerdem hast du drei Variablen mit gleichem Namen "ausgabe" deklariert.[/EDIT]
 
Zuletzt bearbeitet:
Musst es noch als Null deklarieren, sonst kam der Fehler wieder!
Danke!!!


Also hier fehlerfrei :

Java:
public class game {
 
    
    public static String wahl(int a) {
         
        String ausgabe = null;
        if (a == 1) {
             ausgabe  = "Stein";
        }
        
        if (a == 2) {
            ausgabe = "Schere";
        }
        
        if (a == 3) {
            ausgabe = "Papier";
        }
            
 
        return ausgabe;
    }
    
}
 
Außerdem hast du drei Variablen mit gleichem Namen "ausgabe" deklariert.
… was kein Problem darstellen sollte, da sie nur in den jeweiligen if-Blöcken sichtbar sind.
Wie bereits erwähnt, war dein Code auch nicht lauffähig.

Diese Vorgehensweise ist auch nicht optimal, da immer alle drei if-Abfragen durchlaufen werden. Daher entweder if-else oder schöner switch:
Java:
public static String wahl(final int a) {
	switch (a) {
		case 1:
			return "Stein";
		case 2:
			return "Schere";
		case 3:
			return "Papier";
		default:
			return null;
	}
}
Literale solltest du übrigens als Konstanten definieren. Außerdem könntest du dir überlegen, eine IllegalArgumentException zu schmeißen, statt null zurückzugeben.
 
Moin,

Musst es noch als Null deklarieren, sonst kam der Fehler wieder!
Java:
String ausgabe = null;

Nein, besser als leeren String initialisieren !!
Java:
String ausgabe = "";
Bei größeren Projekten gibt es sonst garantiert irgendwann, irgendwo eine Stelle, wo sowas mit 'ner NPE knallt .... 😉

Gruß
Klaus
 
Wenn der leere String doch aber falsch ist, sollte lieber eine Exception fliegen, als dass man mit falschen Werten weiter rechnet. Gerade in großen Projekten. Die Idee mit der IllegalArgumentException ist natürlich noch besser.
 
Da die zu übergebene Variable immer gleich ist und von einem Button ausgelöst wird, ist meiner Meinung nach keine Exception notwenig. Es wird also eine Zufallszahl übergeben.
 
Moin,
Da die zu übergebene Variable immer gleich ist und von einem Button ausgelöst wird, ist meiner Meinung nach keine Exception notwenig. Es wird also eine Zufallszahl übergeben.
Na ja, wenn Du meinst .... 😛ueh:

Das mag auch im Moment vielleicht stimmen - aber eine solche Annahme (wie sagen die Kölner so schön: "es het noch immer jod jejange" ....) ist aber ganz sicher eine potentielle Gefahrenquelle.
Spätestens wenn Du irgendwann einen weiteren Button einbaust, der dann vielleicht der erwarteten Wert NICHT liefert (ob gewollt oder fehlerhafterweise), bekommst hier ein Problem !

Ergo ist die Idee mit der Exception ist also wirklich gut und macht die Stelle in Deiner Software sicherer !

Gruß
Klaus
 
sobald man mit switch arbeitet sollte der default fall eine Exception werfen (ausnahmen gibt es).

Java:
public static String wahl(final int a) {
    switch (a) {
        case 1:
            return "Stein";
        case 2:
            return "Schere";
        case 3:
            return "Papier";
        default:
            throw new IllegalArgumentException("cant handle " + a);
    }
}
vor allem bei Enums ist das essentiell. Wenn sich enums erweitern, man aber vergisst alle zugehoerigen switches zu aendern laeuft man Gefahr mit falschen werten zu rechnen und die Stellen an sich fallen nicht auf.

Dazu einen Unittest der alle enums (gueltigen Optionen) testet und man ist immer auf der sicheren seite
 
Nein, besser als leeren String initialisieren !!

Das ist wieder eine Verallgemeinerung. Ich würde in diesem Fall (abgesehen davon, dass ich eine Exception schmeissen würde) sicher nicht [c]""[/c] an Stelle von [c]null[/c] zurückgeben. Wenn du/ihr in deinen/euren Projekten nicht unterscheiden könnt, wann etwas nicht vorhanden ([c]null[/c]), und wann etwas leer (sei es nun String, List, ...) sein muss, dann ist das nicht unser Problem :bae:
 
Moin,

Das ist wieder eine Verallgemeinerung. Ich würde in diesem Fall (abgesehen davon, dass ich eine Exception schmeissen würde) sicher nicht [c]""[/c] an Stelle von [c]null[/c] zurückgeben. Wenn du/ihr in deinen/euren Projekten nicht unterscheiden könnt, wann etwas nicht vorhanden ([c]null[/c]), und wann etwas leer (sei es nun String, List, ...) sein muss, dann ist das nicht unser Problem :bae:

Zumindest die letzten fünf Worte kann ich voll inhaltlich unterschreiben 😀

Gruß
Klaus
 

Zurück
Oben