Methoden Tage zwischen 2 Daten

seide

Mitglied
hallo, warum geht nicht diese methode? wo ist fehler?

Java:
public static int berechneTage(int t, int m, int j)
    {
		int t2=1;
		int m2=1;
		int j2=1582;
		int tage=0;
    
		  while (!(t2 == t && m2 == m && j2 == j)) {
	            tage++;
	            t2++;
	          if(isSchaltjahr(j2) && m2==2)  
	                tage += 29;
	                    else if(!isSchaltjahr(j2) && m2==2)  
	                        tage += 28;
	                            else{
	                                if(m2%2==0)  
	                                    tage += 30;
	                                        else{
	                                            tage += 31;    
	                                            }
	                                }}
	           return tage;
	                                }
 

HimBromBeere

Top Contributor
Erstens: formatier das mal ordentlich, da sieht ja keine Sau durch...
Zweitens: füg´ mal ´n paar sysouts ein, um zu sehen, was in deinen variablen drinsteht, dann siehst du den Fehler idR. recht schnell.

EDIT: Deine ganzen in der Methode deklarierten Variablen /zumindest
Code:
m2
und
Code:
t2
) werden nie geändert, insofern kann sich an deinen Bedingungen auch nichts ändern...
 
Zuletzt bearbeitet:
P

Pippl

Gast
Praktisch wäre zu wissen was die Methode tun sollte!

Des Weiteren bei
Java:
 if(m2%2==0)  
{
    tage += 30;
}
else
{
    tage += 31;    
}
ein kleiner Denkfehler, diese Regel gilt nur bis m2 == 7 danach dreht sie sich um ;-)


EDIT: du änderst zwar dein 't2' aber der rest wird nie geändert (m2, j2) somit wirst je nach parameter ewig in der while loop bleiben
 
Zuletzt bearbeitet von einem Moderator:

Jodo

Aktives Mitglied
Hi,

ich denke mal du willst die Tage seit dem 01.01.1582 berechnen. Was wird denn als Ergebnis ausgespuckt? Eine viel zu große Zahl, zu kleine Zahl, ein Fehler?
Und ich empfehle dir, Parameter sowie Variable mit mehr Bedeutung zu bennenen, sowie die If-Else-Bedingungen übersichtlicher einrücken und nicht einfach alles nach unten hin, nur weiter nach rechts zu rücken.

Die Schleifenbedingung kann ja zum Beispiel niemals zum Abbruch führen, da du
Code:
m2
und
Code:
j2
niemals änderst.
 

seide

Mitglied
Hi,

ich denke mal du willst die Tage seit dem 01.01.1582 berechnen. Was wird denn als Ergebnis ausgespuckt? Eine viel zu große Zahl, zu kleine Zahl, ein Fehler?
Und ich empfehle dir, Parameter sowie Variable mit mehr Bedeutung zu bennenen, sowie die If-Else-Bedingungen übersichtlicher einrücken und nicht einfach alles nach unten hin, nur weiter nach rechts zu rücken.

Die Schleifenbedingung kann ja zum Beispiel niemals zum Abbruch führen, da du
Code:
m2
und
Code:
j2
niemals änderst.

ja ich möchte die Tage zählen zwische 1.1.1582 und 1.1.1960(als Parameter), aber ich verstehe nicht, wie kann ich dass machen ohne getTimeInMillis():oops: , also programm zeigt gar nichts.

kann ich vielleicht so etwas machen, als if-Abfrage:)?
Java:
if(isSchaltjahr(j2) )  {
	                tage += 366;
	          j2++;}
	                    else { 
	                        tage += 365;
	                                }
 
Zuletzt bearbeitet:

HimBromBeere

Top Contributor
Ein Ansatz wäre doch, eine rekursive Methode zu nutzen, die zuerst prüft, ob die beiden ihr übergebenen Daten identisch sind. Sollte dem nicht so sein, werden t2 und ggf. m2 und j2 um eins erhöht und die Funktion wird mit diesen neuen Parametern erneut aufgerufen. Müsstest du nur noch diese Bedingungen umsetzen, aber das hast du zum Teil ja sowieso schon...

EDIT: Da ´s gestern bereits anderswo die Anmerkung gab: if-schleife.de
 

Jodo

Aktives Mitglied
Dein gedachter Ansatz ist ja schon richtig nehme ich an.
Du hast das Datum 01.01.1582. Sagen wir mal du willst die Tage bis heute, den 04.04.2012, berechnen.
Dann prüfst du wie viele Tage und Monate Differenz dazwischen liegen. Nun bist du ja beim Datum 04.04.1582 (bildlich) angelangt. Anschliessend kannst du in einer for-Schleife (if-Schleifen gibt es nicht ;)) noch deine Prüfung mit dem Schaltjahr durchführen und die entsprechenden Tage aufaddieren.


-Edit- hier etwas Beispielcode. Wenn du die Kommentare korrekt ersetzt, sollte das richtige Ergebnis geliefert werden.

Java:
public int berechneTage(int tag, int monat, int jahr) {
   int abTag = 1;
   int abMonat = 1;
   int abJahr = 1582;

   int anzahlTage = 0;

   while(tag > abTag) {
      anzahlTage += tag--;
   }

   while(monat > abMonat) {
      /* Prüfen wieviel Tage der Monat hat und entsprechend hochzählen.
       * Wie von einem meiner Vorposter genannt ändert sich die Beziehung zwischen geraden Monaten
       * und Anzahl an Tage ab dem August (08).
       */
   }

   while(jahr > abJahr) {
      //hier deine if-Bedingung mit Schaltjahr
   }

   return anzahlTage;
}

-Edit2-
Brauchst du das für eine Schulaufgabe oder nur für dich zum üben? Du machst es dir etwas einfacher, da du mit einem fixen Datum arbeitest und das gerade am 01.01.XXXX beginnt.
Wenn du das zum Laufen bekommst, kannst du dich ja mal dransetzen und eine 2te Methode schreiben, damit du 2 beliebige Daten eingeben kannst und er dir dann, falls die Anhzal an Tagen nicht negativ wäre, das Ergebnis berechnet.

Denn wenn du das fixe Datum z.B. durch 12.12.1200 ersetzt, musst du anders rechnen wenn du die korrekte Anzahl an Tagen bis zum 04.04.2012 haben willst ;)
 
Zuletzt bearbeitet:

seide

Mitglied
-Edit2-
Brauchst du das für eine Schulaufgabe oder nur für dich zum üben? Du machst es dir etwas einfacher, da du mit einem fixen Datum arbeitest und das gerade am 01.01.XXXX beginnt.
Wenn du das zum Laufen bekommst, kannst du dich ja mal dransetzen und eine 2te Methode schreiben, damit du 2 beliebige Daten eingeben kannst und er dir dann, falls die Anhzal an Tagen nicht negativ wäre, das Ergebnis berechnet.

Denn wenn du das fixe Datum z.B. durch 12.12.1200 ersetzt, musst du anders rechnen wenn du die korrekte Anzahl an Tagen bis zum 04.04.2012 haben willst ;)

na danke dir! Ich mache gerade ei Java Kurs und es ist ein Teil von Aufgabe "Gregorianisches und Julianisches Datum". Ich habe noch eine frage warum es zählt schon richtig ohne
Java:
while(monat > abMonat) {
        }
:)

ah sorry es zählt richtig nur wenn monat und tag =1 :)
 
Zuletzt bearbeitet:

Jodo

Aktives Mitglied
Gib mal als Testdatum ein Anderes als das von dir Genannte ein ;)
Da du das fixe Datum am 01.01 und auch für die Parameter Tag und Monat 1 hast, zählt er natürlich keine Tage und Monate.
 

seide

Mitglied
Gib mal als Testdatum ein Anderes als das von dir Genannte ein ;)
Da du das fixe Datum am 01.01 und auch für die Parameter Tag und Monat 1 hast, zählt er natürlich keine Tage und Monate.

was mache ich wieder falsch?:(
Java:
 while(monat > abMonat) {
		   if(abMonat==2) 
		    if(!isSchaltjahr(abJahr)) {
		          anzahlTage+= 28; 
			  abMonat++;}
		     else {
			anzahlTage+= 29; 
			abMonat++;}
		      else {   if(abMonat==4||abMonat==6||abMonat==9||abMonat==11) {
				    anzahlTage+= 30; 
				   abMonat++;
				   }
				   else {
				      anzahlTage+= 31; 
				      abMonat++;
				      }}
		   }
 

seide

Mitglied
Wie wäres

1. Mal mit Fehlerbeschreibungen?
2. Mit kleinen Tests?
3. Mit einer vernünftigen Formatierung?

Java:
public static int berechneTage(int tag, int monat, int jahr) {
		   int abTag = 1;
		   int abMonat =1;
		   int abJahr = 1582;
		 
		   int anzahlTage = 0;
		 
		   while(tag > abTag) {
		      anzahlTage += tag--;
		   }
		 
		   while(monat > abMonat) {
		     	     if(abMonat==2) 
				      if(!isSchaltjahr(abJahr)) {
				         anzahlTage+= 28; 
			           abMonat++;}
				      else {
				         anzahlTage+= 29; 
				         abMonat++;}
			else { if(abMonat==4||abMonat==6||abMonat==9||abMonat==11) {
				      anzahlTage+= 30; 
				   abMonat++;
				   }
				   else {
				      anzahlTage+= 31; 
				      abMonat++;
				      }}
		   }		 
		   while(jahr > abJahr) {
	          if(isSchaltjahr(abJahr) )  {
                       anzahlTage += 366;
                       abJahr++;}
                       else { 
                          anzahlTage += 365;
                           abJahr++;

		   }}
		   return anzahlTage;
		}

wenn ich ersetze abMonat oder abTag auf andere Wert, liefert falsch anzahlTage.
 

Jodo

Aktives Mitglied
Ich kann timbeau nur zustimmen. Bitte wirklich mal den Text sauber formatieren und Fehler nennen (zu viel/zu wenig Tage). Übersichtlicher Code bringt dir etwas, weil du dann den Programmfluss besser nachvollziehen kannst und uns um dir besser zu helfen.
Java:
if (x) {
   //code
} else if (y) {
   //code
} else {
   if (z) {
      //code
   }
}

Auf jedenfall kannst du abMonat++ ans Ende der while-Schleife schreiben, da du das sowieso in jedem if-else-Zweig anwendest.
 

timbeau

Gesperrter Benutzer
Java:
while (tag > abTag) {
			anzahlTage ++;
			tag--;
		}

So passts auf jeden Fall besser.

Wenn dir hier jemand helfen soll ist die Frage/Aussage "Liefert falsche Tage" immernoch besch****!

Eingabe: X
Ausgabe: Y
Soll aber sein: Z

Versetz dich doch mal in die Forenteilnehmer :noe:
 

ARadauer

Top Contributor
Java:
}
            else { if(
wtf!
Verwendest du Eclipse oder sowas? Drück mal Strg+Shift+F das hilf enorm!
 

seide

Mitglied
Danke für eure Hilfe, ist erledigt.:)

nur habe ich noch eine Frage. Wenn ich die Anzahl der Tage zwischen aktuellem Datum und dem durch die Parameter fesgelegten Datum berechnet möchte,
Java:
public dateDiff(int tag, int monat, int jahr)

kann ich aktuelles Datum so deklarieren
Java:
Date date = new Date();

und dann "date" irgendwie teilen auf Tag,Monat, Jahr?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Erste Schritte Tage zwischen 2 Daten berechnen Java Basics - Anfänger-Themen 6
H Datentypen Tage zwischen zwei Datums berechnen Java Basics - Anfänger-Themen 4
S Stunden/Tage Countdown Java Basics - Anfänger-Themen 9
sserio Gregorianischer Kalender und dessen Tage. Java Basics - Anfänger-Themen 14
B Programm, dass alle 3 Tage eine Webseite öffnet? Java Basics - Anfänger-Themen 20
M Rekursion Tage Ansteckung gesamte Bevölkerung Java Basics - Anfänger-Themen 15
B Anzahl von Stunden / Tage von zwei Datumswerten ermitteln Java Basics - Anfänger-Themen 1
M Wochentag ermittel und ggf tage abziehen Java Basics - Anfänger-Themen 4
Bluedaishi Einen Betrag X auf X Tage verteilen Java Basics - Anfänger-Themen 14
T Jahre, Monate, Tage, Stunden, Minuten Java Basics - Anfänger-Themen 1
P Wieviele Tage seit dem Datum vergangen sind Java Basics - Anfänger-Themen 5
F Für Abgabe vor Feiertagen 3 Tage für Abholung hinzuaddieren Java Basics - Anfänger-Themen 19
S Ein Jahr hat 363,7 Tage ? Java Basics - Anfänger-Themen 2
P System - Tage erkennen ( System Time ?) Java Basics - Anfänger-Themen 3
G maximale Anzahl der Tage im Monat Java Basics - Anfänger-Themen 18
R Tage subtrahieren von einem Date() Java Basics - Anfänger-Themen 6
A GregorianCalendar heute + X Tage Java Basics - Anfänger-Themen 11
S Tage aus zwei Datumsangaben berechnen Java Basics - Anfänger-Themen 3
T Tage Zahlen zuordnen Java Basics - Anfänger-Themen 24
T tage in monate und jahre Java Basics - Anfänger-Themen 9
H Dates "Tage" auf gleichheit prüfen? Java Basics - Anfänger-Themen 4
H Anzahl der Tage von Monat ausgeben Java Basics - Anfänger-Themen 7
N Tage in Jahre, Monate umrechnen Java Basics - Anfänger-Themen 1
B Errechnen(Jahre Monate Tage)von einem Datum zu einem anderen Java Basics - Anfänger-Themen 3
A Verständnisfrage Sekunden/Tage Umrechnung Java Basics - Anfänger-Themen 3
I Tage ermitteln Java Basics - Anfänger-Themen 4
G Altersberechnung falsch auf 1-2 Tage Java Basics - Anfänger-Themen 3
DStrohma Millisekunden umwandeln in Jahre, Monate, Tage, Stunden Java Basics - Anfänger-Themen 5
G Differenz in Tage Java Basics - Anfänger-Themen 3
T Bestimmte Tage ausschließen Java Basics - Anfänger-Themen 6
T Datum+ 100 Tage Java Basics - Anfänger-Themen 23
M wieviele Tage der Monat X hat Java Basics - Anfänger-Themen 2
S zu einem Datum Tage addieren Java Basics - Anfänger-Themen 2
W Tage im Monat Java Basics - Anfänger-Themen 3
S Calendar.set Time, Ermittlung der Anzahl Tage fehlerhaft Java Basics - Anfänger-Themen 9
X 14-Tage Testversion erstellen? Java Basics - Anfänger-Themen 15
U tage ausrechnen Java Basics - Anfänger-Themen 4
G HILFE!!! JEDER MONAT HAT 31 TAGE Java Basics - Anfänger-Themen 2
J Datum, Tage herausfinden Java Basics - Anfänger-Themen 2
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 9
Distanz zwischen zwei Zeichenfolgen in einem String bestimmen Java Basics - Anfänger-Themen 5
S Unterschied zwischen Denkweisen Java Basics - Anfänger-Themen 13
O Klassen Zusammenspiel zwischen 2 Klassen Java Basics - Anfänger-Themen 1
Ras Unterschied zwischen parser xml and api xml Java Basics - Anfänger-Themen 7
X Was ist der Unterschied zwischen materialisierten und nichtmaterialisierten Attributen einer Klasse? Java Basics - Anfänger-Themen 1
F Abstand zwischen zwei Objekten berechnen wie? Java Basics - Anfänger-Themen 1
S Längster Pfad zwischen zwei Vertices in einem Graph Java Basics - Anfänger-Themen 3
U Erste Schritte nextGaussian zwischen zwei Werten Java Basics - Anfänger-Themen 19
jhCDtGVjcZGcfzug Was ist der Unterschied zwischen diesen Quellcodes? Java Basics - Anfänger-Themen 3
rafi072001 Assoziation zwischen Musiker und Label Java Basics - Anfänger-Themen 1
I Best Practice Saubere Verbindung zwischen API und Business Layer mit DTO's Java Basics - Anfänger-Themen 2
A Parametar übergabe zwischen Methoden Java Basics - Anfänger-Themen 26
W User zwischen Optionen wählen lassen Java Basics - Anfänger-Themen 1
I Differenz zwischen LocalDateTime Java Basics - Anfänger-Themen 4
Leo_1789 Differenz ausrechnen zwischen denn idealgewicht und denn echten Gewicht Java Basics - Anfänger-Themen 7
E Wie gebe ich alle Daten zwischen zwei Zeitpunkten aus? Java Basics - Anfänger-Themen 2
P Methode die ausgibt wie viele Primzahlen es zwischen 2 und n gibt Java Basics - Anfänger-Themen 10
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 3
marcooooo Separator zwischen allen Zeichen eines Strings einfügen Java Basics - Anfänger-Themen 29
NeoLexx Zuweisungskompatibilität zwischen Vererbungsbeziehungen (Polymorphie) Java Basics - Anfänger-Themen 18
L Threads Synchronisierung zwischen threads Java Basics - Anfänger-Themen 4
N Berührung zwischen Rechtecken Java Basics - Anfänger-Themen 5
Y Unterschied zwischen WindowBuilder und herkömmlichen erstellen des GUI´s? Java Basics - Anfänger-Themen 9
J Wert zwischen JFrames übergeben Java Basics - Anfänger-Themen 2
U Worin besteht der Unterschied zwischen call by reference und call by value? Java Basics - Anfänger-Themen 14
E Unterschied zwischen new und import Java Basics - Anfänger-Themen 5
J Punkt auf,über,unter oder zwischen 2 Geraden Java Basics - Anfänger-Themen 14
A Kommunikation zwischen nebenläufigen Threads Java Basics - Anfänger-Themen 4
B Unterschied zwischen (List<T> a) und (T[] a) Java Basics - Anfänger-Themen 7
Dilara_K Abstand zwischen den Doppelwerten in einem Array herausfinden Java Basics - Anfänger-Themen 20
S Nach dem Herüberschieben eines Arrays zwischen 2 Frames öffnet sich das Frame nicht mehr Java Basics - Anfänger-Themen 12
D Zufallszahl zwischen 10 und 99? Java Basics - Anfänger-Themen 5
J Objektzugriff zwischen disjunkten Klassen Java Basics - Anfänger-Themen 1
L Den Winkel zwischen zwei Vektoren berechnen! Java Basics - Anfänger-Themen 2
A Methoden Unterscheid zwischen public und ohne Java Basics - Anfänger-Themen 9
X Input/Output Höchste Temperaturschwankung zwischen 2 Tagen Java Basics - Anfänger-Themen 2
Bluedaishi der Monat zwischen zwei Datumsangaben Java Basics - Anfänger-Themen 15
R Threads Pause zwischen zwei Schleifen Java Basics - Anfänger-Themen 1
Aprendiendo Unterschied zwischen Referenzvariable und Instanzvariable. Java Basics - Anfänger-Themen 2
N Unterschied zwischen Checked und Unchecked Exceptions Java Basics - Anfänger-Themen 12
S Parameterübergabe zwischen zwei Programme Java Basics - Anfänger-Themen 4
S Erste Schritte Zwischen zwei Punkten ein Minimumpkt./Maxima finden Java Basics - Anfänger-Themen 1
K Klassen Array zwischen Klassen übergeben Java Basics - Anfänger-Themen 2
Arif OOP Die Bindung zwischen einem äußeren und einem inneren Objekt Java Basics - Anfänger-Themen 2
schoenosrockos Unterschied zwischen Objekten und vererbungen Java Basics - Anfänger-Themen 1
S OOP Variablen zwischen mehreren Klassen Java Basics - Anfänger-Themen 11
H Klassen Konstruktor Parameter als Instanzvariablen zwischen speichern... Java Basics - Anfänger-Themen 11
F Klassen Kommunikation zwischen Klassen Java Basics - Anfänger-Themen 4
J Variablen Unterschied zwischen lokalen-, Instanz-, Klassenvariablen Java Basics - Anfänger-Themen 6
N Dauer zwischen zwei LocalDateTime Objekten berechnen? Java Basics - Anfänger-Themen 4
P Ungerade Zahlen ausgeben lassen zwischen Spannweite zweier eingegeben zahlen Java Basics - Anfänger-Themen 6
V Zufallswert zwischen zwei Zahlen a und b Java Basics - Anfänger-Themen 12
M Variable zwischen Klassen übergeben Java Basics - Anfänger-Themen 5
A attach source: Zusammenhang zwischen JAR und .class/.java Dateien? Java Basics - Anfänger-Themen 2
L Unterschied zwischen Klassen - und Instanzvarbiablen Java Basics - Anfänger-Themen 1
F Vererbung von Attributen zwischen zwei Klassen Java Basics - Anfänger-Themen 6
F Referenzen zwischen Methoden Java Basics - Anfänger-Themen 5
B Distanz zwischen zwei Punkten Java Basics - Anfänger-Themen 4
D Suche nach der Anzahl von Zonen zwischen zwei Punkten Java Basics - Anfänger-Themen 2
G Zugriff zwischen Klassen Java Basics - Anfänger-Themen 15

Ähnliche Java Themen

Neue Themen


Oben