Schaltjahrberechnung

EagleCrafter

Mitglied
Liebe Leute,
habe zwar gesehen, dass schon 3 Schaltjahrberechnungen im Forum für Anfänger sind, komme damit aber nicht weiter.
Könnte jemand meinen Versuch anschauen, und mir sagen, warum bei allen Zahlen kein Schaltjahr ausgeworfen wird, wo hab' ich denn den Fehler?
Danke für Eure Mühe!


Java:
public static void main (String [] args)
  {
  int a;

  Out.println("Bitte geben sie ein Jahr für a ein");
  a = In.readInt();

  int erg1 = a/4;
  int erg2 = a/100;
  int erg3 = a/400;

  switch (a = erg1)
  {

  case 1: Out.println("Ihr Jahr ist ein Schaltjahr");break;
  case 2:

  switch (a = erg2)
  {

  case 1: Out.println("Ihr Jahr ist kein Schaltjahr");break;
  case 2:

  switch (a = erg3)
  {
  case 1: Out.println("Ihr Jahr ist ein Schaltjahr");break;
  default: Out.println("Ihr Jahr ist kein Schaltjahr");break;
  }
  default: Out.println("Ihr Jahr ist ein Schaltjahr");break;
  }

  default: Out.println("Ihr Jahr ist ein Schaltjahr");break;
  }

  }
}
 
Zuletzt bearbeitet von einem Moderator:

Thallius

Top Contributor
Ich verstehe Deine Programmlogik mal so überhaupt nicht...

Was soll dir a/4 denn bringen? Wahrscheinlich willst du hier a%4 machen oder?

Was soll switch (a = erg1) machen? Auch hier tippe ich mal auf (a == erg1) ? Aber dann hast du maximal case 0 und case 1 und es kann neimals case 2 sein....

Also sorry aber ich blicke nicht wie Du Dein Ziel erreichen willst.
 

EagleCrafter

Mitglied
Danke für Eure Mühe,
aber ich bin noch so blutiger Anfänger, dass die Hinweise mich überfordern, wir haben erst mal nur Taschenrechner programmiert, deshalb sagen mir viele der Begriffe die in Euren Hinweisen benutzt werden noch nichts. Ich frag mich, warum unser Lehrer uns diese Aufgabe ohne weitere Anweisungen gestellt hat. Im Moment komm ich halt nicht weiter, werde in Der Schule fragen, wie man mit den paar Grundlagen die wir bis jetzt gelernt haben diese Aufgabe lösen kann. Danke Euch auf jeden Fall.
 

Feras

Aktives Mitglied
Probiere das Programm lieber mit if und else zu lösen, wenn du es nicht mit Switch lösen musst. Das ist kürzer und übersichtlicher. Zusätzlich solltest du dann den Modulo (%) Operator verwenden... Wenn du nich weiter kommst frage noch mal...
 

EagleCrafter

Mitglied
Danke für den Tipp, hat mir geholfen, stelle jetzt die Lösung,
die ich auch mit einigen Zahlen versucht habe ein. Nochmals Danke euch allen für die Hilfe.

Java:
public static void main (String [] args)
  {
  int a;

  Out.println("Bitte geben sie ein Jahr ein");
  a=In.readInt();

  if (a % 4 == 0 && a % 100 != 0 || a % 400 == 0)
  {
  Out.println("Ihr Jahr ist ein Schaltjahr!");
  if (a % 100 == 0 && a % 400 != 0)
  {
  Out.println("Ihr Jahr ist kein Schaltjahr!");
  if ( a % 400 == 0)
  {
  Out.println("Ihr Jahr ist ein Schaltjahr!");
  }

  }

  }
  else
  {
  Out.println("Ihr Jahr ist kein Schaltjahr!");
  }
  }
}
 
Zuletzt bearbeitet von einem Moderator:

Flown

Administrator
Mitarbeiter
Da kann man sich das meiste sparen und gleich sowas konstruieren:
Java:
public static void main(String[] args) {
  int a = In.readInt();
  if(isLeap(a)) {
    Out.println(a + " ist ein Schaltjahr.");
  } else {
    Out.println(a + " ist kein Schaltjahr.");
  }
}
public static boolean isLeap(int year) {
  return ((year % 4) == 0) && ((year % 100) != 0 || (year % 400) == 0);
}

PS: Verwende doch, wenn du Code postest die Code-Tags [code=java]//Java-Code[/code]
 

EagleCrafter

Mitglied
Hallo Flown,
habe leider erst heut wieder hier rein geschaut, habe deinen Vorschlag auch gleich versucht, hab# ihn aber leider nicht zum Laufen gebracht.
Jetzt noch eine Frage. was genau heißt, "wenn du Code postest, verwende die Code-Tags"?
Ich hoffe euch mit meinen absoluten Anfängerfragen nicht allzusehr auf den Wecker zu gehen. Danke!
 

Flown

Administrator
Mitarbeiter
Also was funktioniert nicht? Ohne Fehlermeldung kann man dir nicht helfen.
Code tags hab ich dir unter meinen letzten Post gezeigt, wie du diese anwenden sollst.
 

Ähnliche Java Themen

Neue Themen


Oben