Java lernen

Neue Frage »

Auf diesen Beitrag antworten »
javaneu Java lernen

Hallo guten Abend habe gerade ein problem bei dieser Aufgabe:

Schreiben Sie eine Klasse Tage mit einer Klassenmethode public static String wochentag(int
tag). tag soll die „Nummer“ eines Wochentags darstellen. Benutzen Sie das
switch-Statement, um abhängig von der Nummer den zugehörigen Wochentag zurückzugeben
(1 =Montag, 7 = Sonntag). Bei Zahlen, die keinem Wochentag entsprechen, soll "FEHLER: Kein
Wochentag!" zurückgegeben werden.


Ich poste mal meinen Ansatz auch gleich

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:

public class Tage
{
    public static String wochentag(int tag){
        int i = 0;
        switch(i){
         case 0: 
            System.out.println("Kein Tag definiert"); 
            break; 
        case 1: 
            System.out.println("Montag"); 
            break; 
        case 2: 
            System.out.println("Dienstag"); 
            break; 
        case 3: 
            System.out.println("Mittwoch"); 
            break; 
            
            case 4: 
            System.out.println("Donnerstag"); 
            break; 
            case 5: 
            System.out.println("Freitag"); 
            break; 
            case 6: 
            System.out.println("Samstag"); 
            break; 
            case 7: 
            System.out.println("Sonntag"); 
            break; 
        default: 
            System.out.println("Geben sie eine Zahl zwischen 1-7 an"); 
        }
    
    }
}



Könnte man das so programmieren ?

ich bekomme noch die Fehlermeldung missing return statement bei blue j.

Wo muss ich denn da ein return hinzufügen ?
Wir haben gerade angefangen mit java zu programmieren
 
Auf diesen Beitrag antworten »
Karlito

Das sieht schon fast richtig aus. Wenn Du eine Methode mit public static String deklarierst, so muss sie einen String zurückgeben.

Beispiel:
code:
1:
2:
3:
4:
5:
	public static String hallo(){
		return "Hallo Welt!";
	}


Wo Du das return platzierst ist mehr oder weniger deine Sache. Wichtig ist nur, dass jeder Pfad in einer solchen Methode mit einem return endet. Man kann so auch eine Methode vorzeitig beenden.

Damit dein Programm mit den Anforderungen sinnvoll wird, solltest Du also den Wochentag durch die Methode zurückgeben lassen und nicht mit System.out.println() auf die Konsole ausgeben.

Ein weiteres Fehlerchen ist, dass Du in Zeile 5 eine Variable "i" einführst und mit 0 initialisierst. Damit passiert in der Methode immer das Selbe unabhängig davon was für ein Tag an die Funktion übergeben wird.

Hier zwei Möglichkeiten, wie das Programm funktioniert:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
public class Tage
{
	public static String wochentag(int tag){
		String result = "";
		switch(tag){
			case 1: 
				result = "Montag"; 
				break; 
			case 2: 
				result = "Dienstag"; 
				break; 
			case 3: 
				result = "Mittwoch"; 
				break; 
			case 4: 
				result = "Donnerstag"; 
				break; 
			case 5: 
				result = "Freitag"; 
				break; 
			case 6: 
				result = "Samstag"; 
				break; 
			case 7: 
				result = "Sonntag"; 
				break; 
			default: 
				result = "Geben sie eine Zahl zwischen 1-7 an"; 
		}
	return result;
	}

	public static void main(String[] args){
		System.out.println(wochentag(1));
		System.out.println(wochentag(7));
		System.out.println(wochentag(-7));
	}
}


Oder:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
public class Tage
{
	public static String wochentag(int tag){
		switch(tag){
			case 1: 
				return "Montag"; 
			case 2: 
				return "Dienstag"; 
			case 3: 
				return "Mittwoch"; 
			case 4: 
				return "Donnerstag"; 
			case 5: 
				return "Freitag"; 
			case 6: 
				return "Samstag"; 
			case 7: 
				return "Sonntag"; 
			default: 
				return "Geben sie eine Zahl zwischen 1-7 an"; 
		}
	}

	public static void main(String[] args){
		System.out.println(wochentag(1));
		System.out.println(wochentag(7));
		System.out.println(wochentag(-7));
	}
}


Bei der zweiten Variante wird bei jedem case sofort das Ergebnis zurückgegeben. Dabei wird die Methode sofort verlassen. Deshalb ist das "break;" Statement nicht erforderlich.

Besten Gruß,

Karlito
Auf diesen Beitrag antworten »
javaneu

Code von mir jetzt

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:

public class Tage
{
    public static String wochentag(int tag){
        
        switch(tag){
         case 0: 
            return "Kein Tag definiert"; 

        case 1: 
            return "Montag"; 

        case 2: 
            return "Dienstag"; 

        case 3: 
            return "Mittwoch"; 

            
            case 4: 
            return "Donnerstag"; 

            case 5: 
            return "Freitag"; 

            case 6: 
            return "Samstag"; 

            case 7: 
            return "Sonntag"; 

        default: 
            return "Geben sie eine Zahl zwischen 1-7 an"; 
        }
    
    }
}




Funktioniert bei mir ohne fehler ?

Warum steht bei dir noch return result;

Und warum machst du das genau hier ?

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:

public static void main(String[] args){
		System.out.println(wochentag(1));
		System.out.println(wochentag(7));
		System.out.println(wochentag(-7));
	}

Auf diesen Beitrag antworten »
Karlito

Zitat:
Original von javaneu
Code von mir jetzt

...

Funktioniert bei mir ohne fehler ?


Wenn Du es nicht weißt.... Der Code sieht korrekt aus.

Zitat:
Original von javaneu
Warum steht bei dir noch return result;


Es sind wie gesagt zwei Varianten. Bei der ersten nehme ich mir eine Variable result zur Hilfe, weise den richttigen Wert zu und gebe ganz am Ende der Methode den Wert der Variable result zurück. Die zweite Variante erfordert das return result nicht, da in dieser Variante keine Variable result verwendet wird, sondern die Werte direkt zurückgegeben werden.

Zitat:
Original von javaneu
Und warum machst du das genau hier ?

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:

public static void main(String[] args){
		System.out.println(wochentag(1));
		System.out.println(wochentag(7));
		System.out.println(wochentag(-7));
	}



Um den Code zu testen. Die main-Methode ist der Einstiegspunkt eines Java-Programmes. Diese Methode wird immer als erstes ausgeführt und ruft alles Weitere auf. Du hast ja die Wochetage direkt in der Methode wochentag über System.out.println() ausgegeben. Hier gebe ich einfach mit System.out.println() den Rückgabewert der Methode wochentag aus.

VG,

Karlito
 
Auf diesen Beitrag antworten »
javaneu

Alles klar danke .

Kannst mir ja vielleicht bei meiner neuen Aufgabe helfen die ich gepostet hab ,falls du Lust hast.

Oder vielleicht meldet sich ja hier noch jemand anderer . großes Grinsen

Ziemlich ruhig hier im forum.
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »