Return aus For-Schleife

Punk91

Mitglied
Hey ho,
ich habe hier ein Problem.

Java:
boolean vierhundert(Date date1)
	{
		
		for(int i = 1800; i<999999999 ;i=i+400)
		{
		if(i==jahr)
		{return true;}
		else
		{return false;}
		}
	}

Der zeigt mir an, dass die "Return-Anweisung" fehlt. Ich komme einfach nicht weiter...

Habe es auch schon versucht mit einer Variablen zu lösen, aber irgendwie erkennt der keine Variable innerhalb der "For-Schleife" und sagt dann immer Variable nicht Initialisiert.

Ich hoffe ihr könnt mir helfen, danke im Voraus.
 

Jango

Gesperrter Benutzer
Hat nichts mit der Schleife zu tun. Deine Methode hat einen Rückgabewert vom Typ boolean. Also musst du auch solch einen Typ zurückgeben.
 

ARadauer

Top Contributor
der code macht sowieso keinen sinn. du überprüfst 1800 und lieferst true oder false zurück... wozu die schleife?
der compiler ist nicht so schlau, dass es sich sicher ist dass du überhaupt in die schleife gehst, was wäre wenn du gar nicht rein gehst, was gibst du dann zurück?
 

Punk91

Mitglied
Habe ich doch, in Zeile 7 und Zeile 9.
"return true;" und "return false;"

Normal sollte das doch eigentlich reichen oder etwa nicht?


Also das ist der ganze Code
Java:
public class Date
{
int tag, monat;
static int jahr;

public Date(int day, int month, int year)
{
	tag = day;
	monat = month;
	jahr = year;
}

	public static void main(String[] args)
	{
	boolean a, b, c;
	Date date1 = new Date(1,1,2100);
	a = date1.vier(date1);
	b = date1.hundert(date1);
	
	}
	
	boolean vier(Date date1)
	{
		if(jahr%4==0)
		{return true;}
		else
		{return false;}
	}
	
	boolean hundert(Date date1)
	{
		if(jahr%100==0)
		{return true;}
		else
		{return false;}
	}
	
	boolean vierhundert(Date date1)
	{
		
		for(int i = 1800; i<999999999 ;i=i+400)
		{
		if(i==jahr)
		{return true;}
		else
		{return false;}
		}
	}
	
}
 

darekkay

Bekanntes Mitglied
DerCompiler erkennt nicht, dass man niemals aus der Schleife rauskommt. Du müsstest ein return false (oder true) NACH der Schleife hinzufügen.

Die Schleife an sich macht aber auch überhaupt keinen Sinn, denn sie wird nur ein einziges mal durchlaufen ;)
 

VfL_Freak

Top Contributor
Moin,

Java:
boolean vierhundert( Date date1 )
{
    for( int i = 1800; i<999999999; i=i+400 )
    {
        if( i==jahr )
        {
            return true;
        }
        else
        {
            return false;
        }
    }
// HIER fehlt das "return" 
}

BTW: was ist jahr ??
BTW-2: zu spät :-(

Gruß
Klaus
 

faetzminator

Gesperrter Benutzer
Wenn du bereits 4 und 100 herrlich mit Modulo an Stelle der langsamen Schleife löst, warum denn nicht 400 auch?
[c]return jahr % 400 == 0;[/c] ;)
 
S

SlaterB

Gast
ansonsten noch: Date gibts in der API, keine eigene Klasse so nennen

> date1.vier(date1);
das Objekt X an eine Methode von X zu übergeben macht selten Sinn,
der Parameter wird in den Methoden auch gar nicht verwendet

edit:
rein inhaltlich neben verrückter Umsetzung, Prüfung unnötig bis in ferne Zukunft:
von 1800 alle 400 Jahre wäre 1800, 2200, 2600 usw.
das Jahr 2000 war aber gerade eines dieser 400er Jahre..
(oder doch nicht? ich schau nochmal nach ;) edit: doch richtig erinnert)
 
Zuletzt bearbeitet von einem Moderator:

Punk91

Mitglied
Ja, aber wenn ich jetzt unten das return setze, dann gibt er ja immer das zurück was ich dort eintrage.

Ich will ja, dass wenn das Jahr (jahr) ein Jahr ist was auf 1800 + 400 liegt sprich 2200, 2600, 3000, etc.

Warum kommt der nie aus der Schleife raus? die Schleife wird doch nur solang durchlaufen wie i kleiner als 999999999 ist.
 

Landei

Top Contributor
Die zusätzliche Bedinung mit 1800 kannst du ganz einfach dazuschreiben:

[c]return jahr >= 1800 && jahr % 400 == 200;[/c]

Dir ist aber schon klar, dass die Jahre für richtige Schaltjahrregel 1600, 2000, 2400 sind? Das wäre

[c]return jahr >= 1600 && jahr % 400 == 0;[/c]

Das Muster [c]if(blubb) return true else return false;[/c] kann einfach durch [c]return blubb;[/c] ersetzt werden, ebenso [c]if(blubb) return false else return true;[/c] durch [c]return ! blubb;[/c].
 
Zuletzt bearbeitet:

faetzminator

Gesperrter Benutzer
Ich will ja, dass wenn das Jahr (jahr) ein Jahr ist was auf 1800 + 400 liegt sprich 2200, 2600, 3000, etc.

Warum kommt der nie aus der Schleife raus? die Schleife wird doch nur solang durchlaufen wie i kleiner als 999999999 ist.

Richtig. D.h., wenn das Datum dem aktuellen [c]i[/c] (in der Schleife) übereinstimmt, soll [c]true[/c] zurückgegeben werden. Andernfalls soll er nach Abarbeitung der Schleife [c]false[/c] zurück geben.
 

Plopo

Bekanntes Mitglied
Landei hat dir nur eine vereinfachte schreibweise gepostet.
Es müsste dann Komplett folgend aussehen:
Java:
  boolean vierhundert (Date date1)
  {
    return jahr % 400 == 0 && jahr > 1600;
  }

Oder gibt es einen bestimmten Grund, weshalb du nicht den Modulo (%) verwenden möchtest wie zuvor?
 

Punk91

Mitglied
Es will einfach nicht funktionieren. Jetzt hab ich es so angepasst dass es Sysntaktisch läuft, aber aus irgendeinem Grund gibt er immer falsche ergebnisse aus...

Java:
public class Date
{
int tag, monat;
static int jahr;

public Date(int day, int month, int year)
{
	tag = day;
	monat = month;
	jahr = year;
}

	public static void main(String[] args)
	{
	boolean a, b, c;
	Date date1 = new Date(1,1,2100);
	a = date1.vier(date1);
	b = date1.hundert(date1);
	c = date1.vierhundert(date1);
	
	if(a==true)
	{
		if(b==true)
		{System.out.println("Schaltjahr");}
		else
		{
			if(c==true)
			{System.out.println("Schaltjahr");}
			else
			{System.out.println("Kein schaltjahr");}
		}
	}
	else
	{System.out.println("Kein Schaltjahr");}
	
	}
	
	boolean vier(Date date1)
	{
		if(jahr%4==0)
		{return true;}
		else
		{return false;}
	}
	
	boolean hundert(Date date1)
	{
		if(jahr%100==0)
		{return true;}
		else
		{return false;}
	}
	
	boolean vierhundert(Date date1)
	{
		
		for(int i = 1600; i<999999999 ;i=i+400)
		{
		if(i==jahr)
		{return true;}
		else
		{}
		}
		return false;
	}
	
}

Jap weil es alle 400 Jahre ein schaltjahr gibt, aber wenn ich es mit modulo mache ist 2100 auch ein schaltjahr.
 

Punk91

Mitglied
Hab den Fehler gefunden, in Zeile 23 muss man true durch false ersetzen dann gehts.

Vielen Dank für eure hilfe, echt top wie schnell das ging und wie engagiert hier die Leute sind.
 

Plopo

Bekanntes Mitglied
Also bei mir gibt er mit "false" zurück bei "2100"

Java:
public class Test
{
  public static void main (String[] args)
  {
    System.out.println (vierhundert(2100));
  }

  static boolean vierhundert (int jahr)
  {
    return jahr % 400 == 0 && jahr > 1600;
  }
}

Wiedermal zu lange gebraucht ;)
 

turtle

Top Contributor
Merkwürdiger Code:shock:

Bei meiner IDE sagt er bei solchen Methoden:
Java:
boolean vier(Date date1)
    {
        if(jahr%4==0)
        {return true;}
        else
        {return false;}
    }
The value of the parameter date1 is not used.

Und Recht hat Eclipse. Warum übergibst Du Daten, wenn die Methode damit nichts anfangen will?

Räum erst mal auf!
 

OTB

Mitglied
Hab den Fehler gefunden, in Zeile 23 muss man true durch false ersetzen dann gehts.

Vielen Dank für eure hilfe, echt top wie schnell das ging und wie engagiert hier die Leute sind.

Die gleiche Aufgabe musste ich vor kurzem auch lösen.
Mein Ergebnis sah so aus:

Java:
public boolean istSchaltjahr(int jahr) {
    // falls jahr ohne rest durch 400 teilbar ist, dann ist das jahr ein Schaltjahr
    if(jahr % 400 == 0) {
        return true;  // die funktion liefert true zurück und wird beendet
    }
    // falls jahr ohne rest durch 100 teilbar ist, dann ist das jahr kein Schaltjahr
    if(jahr % 100 == 0) {
        return false; // die funktion liefert falls zurück und wird beendet
    }
    // falls jahr ohne rest durch 4 teilbar ist, dann ist das jahr ein Schaltjahr
    if(jahr % 4 == 0) {
        return true;  // die funktion liefert true zurück und wird beendet
    }
    // in allen anderen Fällen ist jahr kein Schaltjahr
    return false;
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Return in While Schleife Java Basics - Anfänger-Themen 6
K Return in Schleife Java Basics - Anfänger-Themen 4
Z Return in While-Schleife Java Basics - Anfänger-Themen 7
B Methoden Probleme mit for Schleife und return Java Basics - Anfänger-Themen 5
O Java return in Schleife Java Basics - Anfänger-Themen 4
T Schleife mit return Anweisung Java Basics - Anfänger-Themen 3
D jump to? return oder endlos schleife ! Java Basics - Anfänger-Themen 2
MiMa Java Doc mehrere Return Parameter Java Basics - Anfänger-Themen 11
J Rekursive Funktion und return statement Java Basics - Anfänger-Themen 3
SUPERTJB return Problem Java Basics - Anfänger-Themen 3
M Warum return die Methode den Wert nicht Java Basics - Anfänger-Themen 5
S Methoden Return Rückgabewert wird nicht übergeben Java Basics - Anfänger-Themen 8
schredder Strings und reguläre Ausdrücke - Methode mit return string.matches Java Basics - Anfänger-Themen 5
I Return Array Java Basics - Anfänger-Themen 4
Q return Ausgabe Java Basics - Anfänger-Themen 4
javapingu Variablenwerte ändern ohne return Statement? Java Basics - Anfänger-Themen 7
C Ausgabe boolean return ((n==9)||(n==0)); Java Basics - Anfänger-Themen 13
G return 1 + methode Java Basics - Anfänger-Themen 4
H Methode mit Array als Rückgabe This method must return a result of Type int[] Java Basics - Anfänger-Themen 2
JD_1998 Hilfsmethode if return funktioniert nicht Java Basics - Anfänger-Themen 2
J Missing Return Statement Java Basics - Anfänger-Themen 11
T Return einer anderen Methode herausfinden Java Basics - Anfänger-Themen 9
C ArrayList mit return zurückgeben Java Basics - Anfänger-Themen 13
M kann man return in nur einer Methode einsetzen? Java Basics - Anfänger-Themen 7
V return String[] führt zu [Ljava.lang.String;@50675690 Java Basics - Anfänger-Themen 7
B Statische Methode return funktioniert nicht. Java Basics - Anfänger-Themen 19
S Missing return Java Basics - Anfänger-Themen 4
das_leon return message Java Basics - Anfänger-Themen 2
C return kann nicht auf variable zugreifen Java Basics - Anfänger-Themen 26
N Ausführung gibt keinen Fehler an, Return wird aber nicht ausgegeben Java Basics - Anfänger-Themen 22
R return: cannot find symbol Java Basics - Anfänger-Themen 2
R Ratespiel mit Return und einer Eingabe Java Basics - Anfänger-Themen 1
N Frage zu this, super und return Java Basics - Anfänger-Themen 13
K ArrayList ausgeben mit return Java Basics - Anfänger-Themen 6
M Return statement Java Basics - Anfänger-Themen 4
J-Gallus Ein Getter bekommt eine anderen Type als er Return soll Java Basics - Anfänger-Themen 9
J Variablen Komsiche System.in.read() return-value? Java Basics - Anfänger-Themen 3
M Abbrechen Methode ohne return Java Basics - Anfänger-Themen 3
M Methoden Datei einlesen und als return übergeben. Java Basics - Anfänger-Themen 8
L OOP Return Java Basics - Anfänger-Themen 10
L Erste Schritte Frage zu 'return' Java Basics - Anfänger-Themen 4
J Methoden Rekursive Return Methode Java Basics - Anfänger-Themen 2
W Return statement in Methode nur bei if-clause Java Basics - Anfänger-Themen 3
D Methoden Return-Wert wird nicht ausgegeben Java Basics - Anfänger-Themen 3
F Return-Anweisung Java Basics - Anfänger-Themen 2
E Erste Schritte <? super Unterklasse> Return-Typ darf nicht vom Wildcard-Typ sein Java Basics - Anfänger-Themen 5
B OOP Methode mit Array mit return verlassen Java Basics - Anfänger-Themen 8
J Grundsätzliche Frage zu return Types in Methoden Java Basics - Anfänger-Themen 6
G return-wert für eine Methode Java Basics - Anfänger-Themen 1
Q Tastatureingabe direkt nach Eingabe (ohne zwischenzeitliches "Return" o.Ä ) weiterverwenden Java Basics - Anfänger-Themen 1
B Variablen Problem mit return String[] Java Basics - Anfänger-Themen 4
O Per return Run Methode beenden Java Basics - Anfänger-Themen 3
M Arrays als return Value? Java Basics - Anfänger-Themen 2
C Return statement Java Basics - Anfänger-Themen 10
T Boolean Missing return Statement?! Java Basics - Anfänger-Themen 2
Z Methoden return nullprüfung Java Basics - Anfänger-Themen 7
K Was macht hier genau return? Java Basics - Anfänger-Themen 2
G Methoden Was bedeutet return in einer Methode Java Basics - Anfänger-Themen 5
Y Warum void statt Datentyp + return Java Basics - Anfänger-Themen 4
K Variablen RETURN in Case-Switch / This method must return a result of type Item Java Basics - Anfänger-Themen 4
K Erste Schritte "return" Problem bei Rekursion Java Basics - Anfänger-Themen 8
R If Verschachtelung und return; Java Basics - Anfänger-Themen 4
M Frage zum return; Befehl Java Basics - Anfänger-Themen 1
S try-catch - Variablen werden nicht an return übergeben Java Basics - Anfänger-Themen 3
C Einige Anfängerfragen (Return-Wert, Exception...) Java Basics - Anfänger-Themen 11
S Methoden Return Java Basics - Anfänger-Themen 8
T return-Wert verwenden? Java Basics - Anfänger-Themen 12
T Return eines Int-Werts? Java Basics - Anfänger-Themen 3
W return-Anweisung gibt nichts aus Java Basics - Anfänger-Themen 5
R Return in If Java Basics - Anfänger-Themen 10
S Methoden Return Anweisung beendet Methode nicht, stattdessen wird diese zweimal durchlaufen Java Basics - Anfänger-Themen 3
G array return methode Java Basics - Anfänger-Themen 10
L return wird nicht erkannt? Java Basics - Anfänger-Themen 3
J Regex mit Return Java Basics - Anfänger-Themen 3
M Variablen return-array klonen Java Basics - Anfänger-Themen 3
A Methode mit Array als Param --> return Array --> Fehler Java Basics - Anfänger-Themen 3
S Zeichen einlesen ohne Return? Java Basics - Anfänger-Themen 19
P Compiler-Fehler Boolean: Missing Return Statement Java Basics - Anfänger-Themen 4
S probleme mit der return anweisung Java Basics - Anfänger-Themen 20
E Warum wird Methode nicht durch return-Befehl beendet? Java Basics - Anfänger-Themen 3
V Erste Schritte Return ohne Argument Java Basics - Anfänger-Themen 6
I Methoden Missing return statement; Intervallschachtellung Java Basics - Anfänger-Themen 12
S Frage zu Vererbung und return. Java Basics - Anfänger-Themen 4
R return (mehrere floats) Java Basics - Anfänger-Themen 11
E Return String Java Basics - Anfänger-Themen 10
P Methoden Methode ohne return abbrechen? Java Basics - Anfänger-Themen 12
I Return Befehl in Methode Java Basics - Anfänger-Themen 13
M Problem mit boolean. Return nicht erkannt Java Basics - Anfänger-Themen 10
S return in GUI ? Java Basics - Anfänger-Themen 12
M This method must return a result of type int Java Basics - Anfänger-Themen 13
F Erste Schritte return (char)toUnsignedInt(value) Java Basics - Anfänger-Themen 2
A Falscher Return-Wert Java Basics - Anfänger-Themen 2
M missing return statement?! Java Basics - Anfänger-Themen 4
L Return Fragen Java Basics - Anfänger-Themen 4
R Nach return() der aufgerufenen Methode wird aufrufende Methode nicht weiter ausgeführt Java Basics - Anfänger-Themen 14
I Null als return obwohl datensatz existiert Java Basics - Anfänger-Themen 12
S this method must return a result of type double Java Basics - Anfänger-Themen 2
V Problem mit return Java Basics - Anfänger-Themen 7
K Return Problem Java Basics - Anfänger-Themen 3
M Fragen zu Methoden (void/return), Übergabe von Parametern Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben