methode funktioniert nicht

Status
Nicht offen für weitere Antworten.

Angelika_25

Bekanntes Mitglied
Hallo und zwar habe ich folgendes Problem. Meine Aufgabe ist es Schaltjahre zu bestimmen. Ich lege also ein Jahr fest und mein Programm muss mir bestimmen, ob es ein Schaltjahr ist oder nicht. Regel:
- 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 durch 100 teilbar ist.

Ich soll jetzt eine Methode (Funktion) schreiben: istSchaltjahr(jahreszahl:int):boolean-->die als booleschen Wert zurückgibt, ob es nun ein Schaltjahr ist oder nicht.

Ich hab jetzt ein Programm geschrieben, aber verstehe nicht, warum es nicht funktioniert:

Code:
public class Musterklasse {
     public static boolean istSchaltjahr(int jahreszahl){
     if (jahreszahl%4==0 && jahreszahl%100==0 && jahreszahl%400==0) {
     
       return true;
     }
     else
     {
       if (jahreszahl%4==0 && jahreszahl%400==0) {
         return true;
       }
       else
       {
         return false;
       }
     }



     public static void main (String args []) {
       int z=2007;
       if (istSchaltjahr(z)=true) {

       System.out.println("Das Jahr "+z+" ist ein Schaltjahr!");
}
 else {


         System.out.println("Das Jahr "+z+" ist kein Schaltjahr!");
 }

     }
  }

Würde mich freuen wenn ihr schnell antworten könntet.

Liebe Grüße
 
if (istSchaltjahr(z)==true) {
statt
if (istSchaltjahr(z)=true) {

am besten
if (istSchaltjahr(z)) {
 
Wenn ich es jetzt so lasse wie am Anfang und nur ein = mehr reinmache, dann kommen diese Fehler:
(alles Syntax Errors)

Code:
-"Type VariableDeclarators" inserted to complete LocalVariableDeclaration"--->java:20:6:20:18
- "";" inserted to complete LocalVariableDeclarationStatement"--->java:20:6:20:18
-""}" inserted to complete MethodBody"--->java:2:57:20:18
Ich hab keine Ahnung was ich mit denen anfangen soll!

Auch wenn ich es so mache, bei dem du gesagt hast es sei am Besten funktioniert es nicht???!!!
 
Code:
public class Musterklasse {
     public static boolean istSchaltjahr(int jahreszahl){
     if (jahreszahl%4==0 && jahreszahl%100==0 && jahreszahl%400==0)
     {
     return true;
     }
     else
         {
            if (jahreszahl%4==0 && jahreszahl%400==0)
            {
            return true;
            }
            else
                {
                return false;
                }
         }



     public static void main (String args []) {
       int z=2007;
       if (istSchaltjahr(z)==true)
       {
       System.out.println("Das Jahr "+z+" ist ein Schaltjahr!");
       }
        else
        {
        System.out.println("Das Jahr "+z+" ist kein Schaltjahr!");
        }

                                               }


}
}

also ich find nichts *g*
 
da fehlt einen } in Zeile 17.

Auch deine istSchaltjahr Methode wird nicht richtig funktionieren. Du hast dich ja nicht an die gegebenen Bedingungen gehalten 😉

- Ein Schaltjahr liegt dann vor, wenn die Jahreszahl durch 4, 100 und 400 teilbar ist.

ist korrekt, allerdings kann man sich die Prüfung obs durch 100 Teilbar ist sparen, den wenn es durch 400 teilbar ist ist es auch durch 100 teilbar.

Ein Schaltjahr liegt auch vor, wenn die Jahreszahl durch 4, nicht aber durch 100 teilbar ist.

Du hast die Bedingung aber mit
Code:
 if (jahreszahl%4==0 && jahreszahl%400==0) {

geschrieben. Richtig wäre

Code:
 if (jahreszahl%4==0 && jahreszahl%100!=0) {


Code:
public static boolean istSchaltjahr(int jahreszahl) {
		if(jahreszahl%400==0 && jahreszahl%4==0) {
			return true;
		} else if (jahreszahl%100!=0 && jahreszahl%4==0) {
			return true;
		} else {
			return false;
		}	
	}
 
@ Joker: inhaltlich war es schon korrekt, der Fall durch 100 teilbar ist im ersten if abgehandelt

edit: doch nicht, nur durch 4 teilbar würde nicht akzeptiert werden 😉

----------


Code:
public class Musterklasse
{
    public static boolean istSchaltjahr(int jahreszahl)
    {
        int j = jahreszahl;
        return (j % 4 == 0 && (j % 100 > 0 || j % 400 == 0));
    } // die letzte Klammer fehlte bei dir noch

    public static void main(String args[])
    {
        teste(2007);
        teste(2008);
        teste(2000);
        teste(1900);
    }

    public static void teste(int jahr)
    {
        if (istSchaltjahr(jahr))
        {

            System.out.println("Das Jahr " + jahr + " ist ein Schaltjahr!");
        }
        else
        {
            System.out.println("Das Jahr " + jahr + " ist kein Schaltjahr!");
        }

    }
}
 
Man bin ich doof, echt!!! Das eine Klammer so viel ausmachen kann..............
Ich müsste wohl auch drauf achten, dass ich die Bedingungen richtig les! Vielen Dank!!
 
Code:
public static boolean istSchaltjahr(int jahrl) {
  return jahr%4 == 0 && (jahr%100 != 0 || jahr%400 == 0);
}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben