Syntaxfehler

Status
Nicht offen für weitere Antworten.

jazzcookie

Mitglied
Java:
public class DayCalculator {
	public static boolean isLeapYear(int y)
	{
	if(y%4==0);//wenn y bei der division durch 4 den rest 0 laesst
	{
		if(y%100==0);//wenn y bei der division durch 100 den rest 0 laesst
		{
			if(y%400==0);//wenn y bei der division durch 400 den rest 0 laesst
			{
				return true;
			}
			else
			{
				return false;
			}
		}
	}
	}

	public static void main(String[] args) {
		// TODO
	}

}
... mein else wird unterringelt und ich weiss nicht warum.wo ist der syntaxfehler??
 
Zuletzt bearbeitet von einem Moderator:

Der Müde Joe

Top Contributor
1. Code Tags benutzen [java*][/java*] )ohne * natürlich
2. Code formatieren
3 ein ; nach dem if() beendet das Statement (weg damit), somit auch kein else möglich
 
B

bygones

Gast
bitte code formatieren und (wie gross rot beschrieben beim erstellen) IMMER [ JAVA ] Tags nutzen

Java:
    public static boolean isLeapYear(int y) {
        if (y % 4 == 0) {
            if (y % 100 == 0) {
                if (y % 400 == 0) {
                    return true;
                }
            }
        }
        return false;
    }

    public static void main(String[] args) {
    // TODO
    }
 

Developer_X

Top Contributor
Java:
public class DayCalculator 
{
  public static boolean isLeapYear(int y)
  {
    if(y%4==0)
    {
      if(y%100==0)
      {
        if(y%400==0)//;  du hattest die semikolons gemacht, nach einer if abfrage, darf man das aber nicht        {
          return true;
        }
        else
        {
        return false;
        }
      }
    }
}
//OHNE SEMIKOLON!
  public static void main(String[] args) 
  {
  }
}

Kannst du mir bitte einen Dank Punkt geben?
 
S

SlaterB

Gast
> Kannst du mir bitte einen Dank Punkt geben?

na das haben wir nun von dem System ;)
bitte nie nach sowas fragen.. (und fürs Editieren des ersten Posts will ich auch einen Viertel-Punkt)
 

Der Müde Joe

Top Contributor
Wenns mod 100 = 0 dann ist doch keines dachte ich??

EDIT:

ok...das muss eigenltich anders rum
if (mod 400) leap
else if (mod 100 ) nix leap
else if (mod 4) leap
else nix leap

sonst gibts ja nur alle 400 Jahre ein leap
 
Zuletzt bearbeitet:

Developer_X

Top Contributor
Du kannst das aber noch viel einfacher machen, mit dem sogenannten LogikOperator &&
Java:
public class DayCalculator 
{
  public static boolean isLeapYear(int y)
  {
    if(y%4==0&&y%100==0&&y%400==0)
    {
          return true;
    }
    else
    {
          return false;
    }
}
  public static void main(String[] args) 
  {
  }
}
 

Der Müde Joe

Top Contributor
>if(y%4==0&&y%100==0&&y%400==0)

Wo ist der Zonk button? (alle 400 Jahre ein Leap)

if( (mod 4 && !mod 100) || (mod 400) )true
 

Der Müde Joe

Top Contributor
>Schaltjahr ist wenn die Zahl durch 4, nicht durch 100, aber durch 400 teilbar ist.

Nö. wenn durch 400 ist eins. wenn durch 4 ist eins aber nur wenn nicht durch 100.

EDIT:
Nach nochmaligen lesen passt deins auch *schame*
 
Zuletzt bearbeitet:

frapo

Bekanntes Mitglied
> Kannst du mir bitte einen Dank Punkt geben?

na das haben wir nun von dem System ;)
bitte nie nach sowas fragen.. (und fürs Editieren des ersten Posts will ich auch einen Viertel-Punkt)

Ich hätte auch gern ein viertel- oder zumindest ein achtel-Dank-Super-Wichtig-Punkt, schliesslich habe ich den Beitrag gelesen :)
 
S

SlaterB

Gast
zietere ein Posting, wo es schon richtig drin steht,
so muss es aussehen
 

jazzcookie

Mitglied
ich hab ein neues syntaxproblem wobei mir die funktion public static boolean isValidDate(int d, int m, int y) rot unterringelt wird.wo liegt der syntaxfehler?(ich hoffe der code wird jetzt in der richtigen form dargestellt^^)
Java:
public class DayCalculator 
{
  public static boolean isValidDate(int d, int m, int y)

	{
		if(m<=12)
		{
			if(m<=7)//von januar bis juli
			{
				if(m%2==0)//die geraden monate
				{
					if(m==2)//der februar hat nur 29 tage
					{
						if(d<=28)
						{
						System.out.println("gueltiges datum");
						return 28;
						}
						else
						{
							System.out.println("ungueltiges datum");
							return 28;
						}
					}
					else
					{
						if(d<=30)
						{
						System.out.println("gueltiges datum");
						return 30;//die anderen geraden monate haben dann also in diesem fall 30 tage
						}
						else
						{
							System.out.println("ungueltiges datum");
							return 30;
						}
					}
				}
				else//die ungeraden monate zwischen januar und juli haben dann 31 tage
				{
					if(d<=31)
					{
						System.out.println("gueltiges datum");
						return 31;
					}
					else
					{
						System.out.println("ungueltiges datum");
						return 31;
					}
					
				}
			}
			else//von august bis dezember
			{
				if(m%2==0)//die geraden monate haben dann in dieser haelfte 31 tage
				{
					if(d<=31)
					{
					System.out.println("gueltiges datum");
					return 31;
					}
					else
					{
						System.out.println("ungueltiges datum");
						return 31;
					}
				}
				else//und die ungeraden??,... ja die ungeraden haben 30 tage
				{
					if(d<=30)
					{
					System.out.println("gueltiges datum");
					return 30;
					}
					else
					{
						System.out.println("ungueltiges datum");
						return 30;
					}
				}
			}
		}
		else
		{
			System.out.println("ungueltiges datum");
			return 30;
		}
	}
}
[/QUOTE]
 
Zuletzt bearbeitet:
S

SlaterB

Gast
der eine Kommentar im Java-Tag macht die Breite des Forums kaputt,
bitte gleich mal selber korrigieren (mehr Zeilenumbrüche) per Editieren-Button

bei mir ist die Methode nicht unterkringelt,
der Rückgabetyp boolean passt aber nicht zu return 28;

-----
möglichst immer Code kürzen, bevor du ihn postest,
z.B.
Java:
class DayCalculator
{
    public static boolean isValidDate(int d, int m, int y)
    {
        System.out.println("ungueltiges datum");
        return 30;
    }
}
 

jazzcookie

Mitglied
wenn ich unter der funktion "return true" schreibe wird gesagt das er int nich in boolean konvertieren kann.

und ohne "return true" gibt es folgende fehlermeldung:

" Multiple markers at this line
- Syntax error on token ")", ; expected
- Syntax error on token ",", ; expected
- Duplicate local variable y
- Illegal modifier for parameter isValidDate; only final is
permitted
- Syntax error on token ",", ; expected
- Syntax error on token "(", ; expected
- Duplicate local variable m."

was kann ich tun um diesen fehler zu beheben??
 
S

SlaterB

Gast
> wenn ich unter der funktion "return true" schreibe wird gesagt das er int nich in boolean konvertieren kann.

wahrscheinlich steht irgendwo noch return 28; wie bereits geschrieben,
zum Rest:
aktuellen Code posten, wenn möglich gekürzt, es müssen sicher nicht alle 10 Ungültigkeitsfälle drin sein

und

der eine Kommentar im Java-Tag macht die Breite des Forums kaputt,
bitte gleich mal selber korrigieren (mehr Zeilenumbrüche) per Editieren-Button
ignorierts du kommentarlos?
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben