Bitte Hilfe bei Übung zu Verzweigungen

Status
Nicht offen für weitere Antworten.

Capone

Mitglied
Bitte um eure hilfe bei einer Übung zum Thema verzweigungen.
Hab leider erst seit 2Wochen Java und komm nicht auf die Lösung.

Übung:

Ein Schaltjahr liegt dann vor, wenn die Jahreszahl durch 4, 100 und 400 teilbar ist. Ein Schaltjahr liegt auch vor, wenn die Jahreszahl durch 4, nicht aber durch100 teilbar ist.
Schreiben Sie eine Funktion isSchaltjahr(Jahreszahl: int): boolean, die als BOOLEschen Wert zurückgibt, ob ein Schaltjahr vorliegt.



Vieleicht kann mir ja jemand helfen

Gruß

Capone
 
naja, also ein schaltjahr isses immer dann wenns durch 4 geht 🙂

Code:
public boolean isSchaltjahr(int iJahr)
{
   return (iJahr % 4 == 0) ? true : false;
}
würd ich mal sagen 😉
 
ich wette ich bin zu langsam 🙁

Code:
if (iJahr & 100 == 0){
    if (iJahr %100 == 0){
        return true
    }else{
        return false
    }
else{
    if(iJahr % 4 == 0){
        return true;
    }else{
        return false
    }
}
 
the_29 hatte schon recht, da alles was durch 100 teilbar ist, auch durch 4 teilbar ist...
Du kannst dir also die erste Verzweigung sparen...
 
mhm - wenn eine Zahl durch 100 teilbar ist, ist sie auch durch 4 teilbar... oder ?

gibts da nciht auch noch ne regelung, aber wenn durch 200 dann nicht - schwirrt irgendwas im Kopf rum....
oder war es durch 100 dann nicht ?!

Edit: ha gefunden und ihr habt unrecht *

# Glatt durch 4 teilbare Jahre sind Schaltjahre.
# Glatt durch 100 teilbare Jahre sind jedoch keine Schaltjahre.
# Glatt durch 400 teilbare Jahre sind aber wieder Schaltjahre.

na gut - 400 nicht 200 :wink:
 
jo, irgendwas war da mit durch 200!
also wenn ein jahr durch 200 geht dann war es keines, aber dann wäre 2000 kein schaltjahr gewesen, war aber eines! (deswegen ist es einfach %4 🙂)
 
nö, mit mod 4 wäre ja 1900 ein schaltjahr gewesen

meines stimmt schon, ausse das bei der zweiten if 400 statt 100 stehen müsste
 
dotlens hat gesagt.:
nö, mit mod 4 wäre ja 1900 ein schaltjahr gewesen
meines stimmt schon, ausse das bei der zweiten if 400 statt 100 stehen müsste
abgesehen davon dass du zweimal nacheinander abfägst ob eine Zahl durch 100 teilbar ist :wink:

hier gibt es die Definition: http://www.matheboard.de/lexikon/Schaltjahr,definition.htm
ein auszug:
Von Papst Gregor XIII. wurde daher 1582 folgende Regelung eingeführt (Gregorianischer Kalender):

* Glatt durch 4 teilbare Jahre sind Schaltjahre.
* Glatt durch 100 teilbare Jahre sind jedoch keine Schaltjahre.
* Glatt durch 400 teilbare Jahre sind aber wieder Schaltjahre.

So sind zum Beispiel die Jahre 1800, 1900 und 2100 keine Schaltjahre, die Jahre 2000 und 2400 hingegen schon. Damit dauert das Gregorianische Jahr 365,2425 Tage, und ist genauer als das Julianische Jahr.
 
ajo, da hat er echt 😛

dann halt so

Code:
return iJahr % 100 == 0 ? (iJahr % 400 == 0 ? true : false) : (iJahr % 4 == 0 ? true : false);

so gehörts, weil iJahr & 100 == 0 geht bei mir nicht!
 
das ist sehr komisch!
hab das grad mal gemacht 🙂

Code:
public static boolean bJahr(int iJahr)
  {
    return iJahr % 100 == 0 ? (iJahr % 400 == 0 ? true : false) : (iJahr % 4 == 0 ? true : false);
  }

public static void main(String arg[])
{
   for(int x = 0; x != 2006; x++)
     if(bJahr(x))
        System.out.println(x);
}

so kommt diese Ausgabe 🙂
.....
1892
1896
1904
1908
....

was ja laut dbacs eintrag stimmen würde, nur logisch erscheint mir das nat, weil da einfach 8 jahre zwischen einem schaltjahr sind.... verdammte astronomoie 🙂


was isn mit dem forum schon wieder los????
 
so sind nun mal die Sterne *g

zwar hat hier nun einer keine Hausaufgaben mehr - aber haben wir nicht alle was gelernt 🙂
 
Der Ausdruck:
Code:
iJahr % 400 == 0
gibt sowieso einen Boolean zurück.

Code:
public class LeapYear
{
	public static boolean isLeapYear(int iYear)
	{
		return iYear % 100 == 0 ? iYear % 400 == 0  : iYear % 4 == 0 ;
	}

	public static void main(String arg[])
	{
	   for(int x = 0; x != 2006; x++)
		 if(isLeapYear(x))
			System.out.println(x);
	}
}
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben