Hallo,
ich soll im Rahmen einer Hausarbeit Java eine Zahl zwischen 0-6 berechnen lassen und dann per switch case Anweisung den Zahlen Wochentagen zuweisen (0 = Sonntag , 1 = Samstag usw).
Das Problem ist nun, dass ich auch die Fehleingaben abfangen will. Zum Beispiel day darf nicht größer als 31 sein , Monat größer 12 etc.
Hier erst mal mein Code für die Problembeschreibung bitte runter scrollen)
So, das Problem ist jetzt, dass wenn ich zum Beispiel für den Monat 300 eingebe , er mir ein FALSE ausgibt , das soll er auch. Aber er RECHNET trotzdem weiter , ich wollte ein else vor int ynull einbauen, doch dann meckert er wegen return Name;.
Wie kriege ich das hin, dass er , wenn der Benutzer falsche Eingaben macht, NICHT mehr rechnet , sondern NUR False ausgibt ?
Ich bitte um etwas Hilfe.
Vielen Dank im Voraus.
ich soll im Rahmen einer Hausarbeit Java eine Zahl zwischen 0-6 berechnen lassen und dann per switch case Anweisung den Zahlen Wochentagen zuweisen (0 = Sonntag , 1 = Samstag usw).
Das Problem ist nun, dass ich auch die Fehleingaben abfangen will. Zum Beispiel day darf nicht größer als 31 sein , Monat größer 12 etc.
Hier erst mal mein Code für die Problembeschreibung bitte runter scrollen)
Java:
public class SomeCalculations {
static int day = new java.util.Scanner(System.in).nextInt();
static int month = new java.util.Scanner(System.in).nextInt();
static int year = new java.util.Scanner(System.in).nextInt();
// Benutzer gibt Tag, Monat , Jahr ein
public static void main(String[] args) {
// TODO Auto-generated method stub
int errechnetezahl = weekday(day,month,year);
switch(errechnetezahl){
case 0:
System.out.println("Sonntag");
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;
default:
System.out.println("Error");
}
}
public static int weekday (int day, int month, int year){
if (month > 12 || day >31 || day<1 || year < 1582|| year <1 || (year %4==0 && year %100 !=0) && month==2 && day>29)
System.out.println("False");
int ynull = year - ((14-month)/12);
int x = ynull + (ynull/4) - (ynull/100) + (ynull/400);
int mnull = month + 12*((14-month)/12) -2;
int Name = ( day +x + (( 31*mnull)/12) )%7;
return Name;
}
}
So, das Problem ist jetzt, dass wenn ich zum Beispiel für den Monat 300 eingebe , er mir ein FALSE ausgibt , das soll er auch. Aber er RECHNET trotzdem weiter , ich wollte ein else vor int ynull einbauen, doch dann meckert er wegen return Name;.
Wie kriege ich das hin, dass er , wenn der Benutzer falsche Eingaben macht, NICHT mehr rechnet , sondern NUR False ausgibt ?
Ich bitte um etwas Hilfe.
Vielen Dank im Voraus.