Datums-Palindrome finden

MiaLia1

Mitglied
Hallo ihr Lieben,

ich schreibe ein Programm, bei dem ich alle Datumsangaben vom 01.01.2000 bis zum 31.12.2100
die ein Palindrom sind, suche.
– z. B.: 02.02.2020 oder 28.02.2082 sind Palindrome
Bei einstelligen Tages- und Monatswerte führende Nullen berücksichtigen, z.B.
hat der 2. Tag eines Monats eine führende Null.
1634235395954.png
ANFORDERUNGEN:
1634235287416.png
Ich bin eine Anfängerin und wäre sehr Dankbar wenn mir jemand helfen könnte mit Erklärung und ohne Arrays, Danke🙂
 
Ich hätte jetzt zuerst die Variablen deklariert:
int tag = 01;
int monat = 01;
int jahr = 2000;

Müsste ich dann als zweiten Schritt eine Schleife machen die das Datum vom 01.01.2000 bis 31.12.2100 erhöht?
 
Ich denke damit wäre eine eigene Datum-Klasse wie folgt gemeint. Eventuell so?

[CODE lang="java" title="Datum-Klasse"]public class Datum {
private int tag;
private int monat;
private int jahr;

Datum(int tag, int monat, int jahr) {
this.tag = tag;
this.monat = monat;
this.jahr = jahr;
}

public int getTag() {
return tag;
}

public int getMonat() {
return monat;
}

public int getJahr() {
return jahr;
}

public String toString() {
String tagAusgabe = String.valueOf(tag);
String monatAusgabe = String.valueOf(monat);

if(tag < 10) {
tagAusgabe = "0" + tagAusgabe;
}

if(monat < 10) {
monatAusgabe = "0" + monatAusgabe;
}

String ausgabe = tagAusgabe + "." + monatAusgabe + "." + jahr;
return ausgabe;
}

}[/CODE]
 
Bitte keine pauschalen falschen und halbfertigen Lösungen präsentieren. Das verwirrt nur und der Fragesteller lernt daraus nichts.
1. ist der Code an den Anforderungen vorbei:
Die Verwendung von Strings zum Speichern oder Überprüfen eines Datums [...] ist nicht zulässig.
2. ist die Iteration über die gültigen Monate und Tage ist offensichtlich falsch: Die Schleifen über die Monate und Tage können nicht einfach pauschal range1 und range2 als untere/obere Grenzen verwenden. Die Grenzen hängen davon ab, ob es jeweils der _erste_ oder _letzte_ Monat/Jahr ist, über den gerade iteriert wird. Wenn ich zwischen 01.02.2000 und 02.03.2000 iteriere, will ich ja nicht nur 4 Daten generieren.

Die Prüfung, ob ein Datum ein Palindrom ist, lässt sich sehr schön rein mit int (und %, /, *) arithmetisch testen.
 
Hättest du noch Tipps wie ich die Aufgabe angehe? Ich würde es gerne selbst angehen, jedoch verstehe ich es so gut wie gar nicht.
 
Zuletzt bearbeitet:
Die erste Frage ist: was ist ein Palindrom und was bedeutet dies für diese spezielle Aufgabe?

Wenn man sich das überlegt für ein Datum
ddmmjjjj dann ist klar, dass zwischen dem dumm und dem jjjj eine bestimmte Beziehung bestehen muss.

Wenn es also einen Bereich gibt, dann wird man nur durch dem Durchgehen aller Jahre doch alle Fälle abdecken können.

Denn wenn das Jahr 2000 gegeben wird, dann bedeutet das, dass ddmm eben 0002 sein müsste.
Bei 2001 wäre es 1002 als ddmm Anteil.

Daher kann man jetzt erst einmal aus jedem Jahr die Werte erzeugen.

Der zweite wichtige Punkt ist dann: 00022000 ist wohl kaum ein gültiges Datum. Also Datum auf Gültigkeit prüfen!

Ablauf also:
Für jedes Jahr aus dem Zeitraum das Palindrom bilden
Dann prüfen, ob es ein gültiges Datum ist.

Jetzt wäre wichtig: wie kann man prüfen, ob ein Datum gültig ist? Was sind da die Regeln?
 

Zurück
Oben