Methoden Rückgabewert Verbergen / nicht mit ausgeben

Larry-MOB12

Neues Mitglied
Hey Leute,
Ich hab vor kurzen angefangen mich mit Java zu beschäftigen und hab jez auch schon ein bisschen was geschrieben.
Soweit Funktioniert eigentlich alles aber leider kann ich für die Letzte Methode keine void Methode nehmen sondern muss eine int Methode nehmen.
Deshalb MUSS ich immer Zahl zurückgeben.

gibt es eine Möglichkeit return zu verbergen in der Ausgabe so das da keine Zahl steht.

Danke schonmal an alle und ich weiß man kann den Code Besser Schreiben als das was ich da hingeschmiert hab.

public class Wochentagberechnung{



public static void main(String[]arg){
int e = Tastatur.intEinlesen ();
int r = Tastatur.intEinlesen ();
int k = Tastatur.intEinlesen ();
System.out.println(wochentag(e, r, k));
System.out.println();
}

public static int wochentag(int day, int month, int year){
int w = (day + 2 * month + (3 * month + 3)/5 + year + year/4 - (year/100 - year/400 - 2))%7;
return tag(w);
}
public static int tag( int number1){
String s = "Fehler bei der eingabe ";
if (number1 == 0) {
s = Integer.toString(number1);
s = "Samstag";
System.out.println(s);
}
if (number1 == 1) {
s = Integer.toString(number1);
s = "Sonntag";
System.out.println(s);
}
if (number1== 2) {
s = Integer.toString(number1);
s = "Montag";
System.out.println(s);
}
if (number1 == 3) {
s = Integer.toString(number1);
s = "Dienstag";
System.out.println(s);
}
if (number1 == 4) {
s = Integer.toString(number1);
s = "Mittwoch";
System.out.println(s);
}
if (number1 == 5 ){
s = Integer.toString(number1);
s = "Donnerstag";
System.out.println(s);
}
if (number1 == 6) {
s = Integer.toString(number1);
s = "Freitag";
System.out.println(s);
}
if (number1 < 0){
System.out.println(s);
}
if (number1 > 6) {
System.out.println(s);
}
return number1;
}
}
 
Ich glaube er meint die Ausgabe beim Methoden Aufruf.
Er will das der Rückgabe Wert nicht auf dem Bildschirm erscheint wieso erschließt sich mir zwar auch nicht.
Vileicht will er den Wochentag anzeigen.
Dann sollte er den Rückgabe Wert auf string ändern. Und auch den String als return angeben.
 
Eine Methode sollte eine Sache machen und nicht mehr. Deine Methode tag macht aber zwei Dinge: Erst ermittelt sie einen Wochentag und dann macht sie eine Ausgabe. Das sollte man also direkt aufteilen.

Dann sagt der Name nichts aus. Wenn der Wochentag ausgegeben wird, dann wäre das doch ein Methodenname.

Du übergibst number1 und gibst diese auch unverändert zurück. Das macht kein Sinn. Ich gebe Dir etwas nur damit Du mir es direkt wieder zurück gibst?

Daher kann man das aufteilen in zwei Teile:
a) public static String getWochentag(int tag) -> Das gibt dann - abhängig von tag - eben den Wochentag zurück.
b) public static void printWochentag(int tag) -> das ruft dann getWochentag auf und gibt das Ergebnis aus.

Und dann zu Deinem Code, der an vielen Stellen so aussieht:
Java:
s = Integer.toString(number1);
s = "Donnerstag";
Das macht so keinen Sinn. Die erste Zuweisung zu s wird ja sofort wieder überschrieben. Daher kann die erste Zeile direkt gelöscht werden.

Und bezüglich der vielen if:
- Zum einen sind die exklusiv, daher sollte man da zumindest if / else if / else if ... verwenden. Dann muss nicht alles kontrolliert werden.
- Bei so Auswahl-Elementen ist es auch durchaus üblich, die switch Anweisung zu verwenden.

Die Wahl der Zuordnung finde ich auch relativ seltsam. Es ist immer eine Frage, was ist denn der erste Tag (Sonntag oder Montag) und fängt man bei 0 oder 1 an. Aber bei 0 mit Samstag anzufangen ist zumindest unüblich (Aber wenn es so gefordert ist, dann ist es natürlich gefordert).

Das wäre so mein Hinweis bezüglich Deines Codes - wobei ich auch nicht sicher verstanden habe, was Du da machen willst.

Edit: Vielleicht noch die Anmerkung: Ich habe hier lediglich den Code als solchen bewertet. Nicht den Algorithmus, der verwendet wurde. Da gibt es auch noch mögliche Veränderungen, auf die ich aber erst einmal nicht eingegangen bin, da der Fokus vor allem auf den genannten Punkten liegen sollte.
 
Müsstest du, um dein Ziel zu erreichen, nicht einfach nur das System.out.println(wochentag(e, r, k)); in deiner Main-Methode durch wochentag(e, r, k); ersetzen (also den print-Aufruf wegnehmen)? Der Wochentag als Wort wird ja sowieso schon in der anderen Methode ausgegeben.
 

Zurück
Oben