Ich habe eine Stammbaum-App, mit der Sie Knoten erstellen können. Ich stecke an einem Problem fest, das die Änderung des Geburtsdatums eines Mitglieds erfordert. Das Geburtsdatum ist nur eine Zeichenfolge im folgenden Format TT-MM-JJJJ. Mein Problem tritt auf, wenn geprüft wird, ob das Geburtsdatum gültig ist (d. H. Jeder Elternteil darf nicht jünger als ein Kind sein). Wenn der Knoten sowohl Eltern als auch Kinder hat und der Benutzer das Geburtsdatum ändern möchte, muss die Funktion kontinuierlich prüfen, ob ein Alter zwischen den beiden Daten hinzugefügt wurde. Das Problem, das ich habe, besteht darin, diese kontinuierliche Überprüfung mit den von mir definierten Methoden durchzuführen. Ich hoffe, dass jemand die Isue versteht und helfen kann. Hinweis checkDOb setzt auch das dob. seine schlechte Namensgebung von meiner Seite.Logisches Problem - Java
hier ist der Code:
private void dateCheck(FamilyMember node) {
String dob = enterDateOfBirth();
if (node.hasChildren()) {
node.setDob(dob);
checkDob(node, node.getOldestChild(), 0);
}
FamilyMember parent = null;
if (node.hasMother() && node.hasFather()) {
if (node.getMother().getAge() > node.getFather().getAge()) {
parent = node.getFather();
} else {
parent = node.getMother();
}
checkDob(parent, node, 1);
} else {
//single parent
if (node.hasMother()) {
parent = node.getMother();
checkDob(parent, node, 1);
}
if (node.hasFather()) {
parent = node.getFather();
checkDob(parent, node, 1);
}
}
}
private void checkDob(FamilyMember parent, FamilyMember child, int member) {
out.println(parent.getYear());
out.println(child.getYear());
while (parent.getYear() > child.getYear()) {
out.println("Invalid Date - The Oldest Child of " + parent.getFullName()
+ "(" + child.getFullName() + ")\n cannot older than his/her parents. Try Again.");
out.println();
if (member == 0) {
parent.setDob(enterDateOfBirth());
}
if (member == 1) {
child.setDob(enterDateOfBirth());
}
}
}
private String enterDateOfBirth() {
out.print("Enter Year Of Birth (0 - 2011): ");
String y = in.nextLine();
out.print("Enter Month Of Birth (1-12): ");
String m = in.nextLine();
if (m.trim().equals("")) {
m = "0";
}
if (m.length() == 1) {
m = "0" + m;
}
m += "-";
out.print("Enter Date of Birth (1-31): ");
String d = in.nextLine();
if (d.trim().equals("")) {
d = "0";
}
if (d.length() == 1) {
d = "0" + d;
}
d += "-";
String dob = d + m + y;
while (!DateValidator.isValid(dob)) {
out.println("Invalid date. Try again.");
dob = enterDateOfBirth();
}
return (dob);
}
Vielen Dank im Voraus.
muss es wirklich rekursiv sein? Warum überprüfen Sie nicht nur die Daten der direkten Eltern? Wenn Sie alle Änderungen validieren, sind diese bis zur Wurzel gültig. – Mauricio
Einverstanden.Obwohl Sie keinen Stammknoten in einem Stammbaum haben. –
Sie rufen 'DateValidator.isValid' auf, wie es mit recursiveDateCheck verbunden ist? Wie benutzt man die 'int gen' Variable? –