Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo,
Ich bin nun schon seit 2 Stunden dabei ein Programm zu entwickeln und komme auf keinen Ansatz.
Ich soll für meinen Informatikunterricht ein Programm zur Berechnung zweier Daten erstellen und bis Dienstag abgeschickt haben.
Ich habe mir auf einem Blatt schon einen Mathematischen lösungsweg gefunden, jedoch habe ich keine Idee wie ich die sen in Programmcode umsetzten kann:
Zur berechnung der Jahre:
bisJahr-vonJahr-1
zur berechnung der Tage habe ich mir eine Datenbak angelegt, wieviele Tage nach dem x-ten Monat bereits vergangen sind:
Jan=0+ den Tag des monats
Feb=31 +Tag
März=59 +Tag
Aprill=90 +Tag
Mai=120+Tag
usw.
als nächstes die differenz zwischen 365 und den Angefangenen Tagens des vonJahr ausrechen und diese dann zu den Jahren addieren. Als Letztes noch die Tage des Bisjahres Addieren und fertig.
Schaltjahre sind noch nicht mit inbegriffen.
Nun versuchte ich dies in einen Programmtext umzuwandeln, jedoch bin ich schon beim Versuch die Jahre auszurechnen gescheitert.
Bitte um Hilfe.
Auch und hier ist mein "Ansatz"
public class tagezwischendaten
{
void jahre
(int vonjahr ,int bisjahr ,int jahresdifferenz)
{
int x = 365;
jahresdifferenz = bisJahr * x - vonJahr * x - x
Ich schlage vor viele jUnit-Tests zu schreiben, um deinen Code zu prüfen.
Weiterhin ist Java case-sensitiv, also musst du darauf achten, das bisjahr und bisJahr zwei VERSCHIEDENE Variable sind.
MEIn Test war
Java:
@Test
public void jahre() {
int x = 365;
int vonjahr = 1970;
int bisjahr = 1971;
int jahresdifferenz = (bisjahr - vonjahr) * x;
assertEquals(365, jahresdifferenz);
}
Ich stimme gescom zu, aber fürs Rechnen mit Datumswerten nehme ich immer joda-time, zumal im neuen JDK eine API drin ist, die sehr nahe an joda-time ist.
Und damit geht de ganze Rechnung (mit Schaltjahren) extrem einfach.
Benutzt Java tags wenn du hier code reinschreibst.
Dein Ansatz ist an einigen stellen Falsch und du solltest versuchen die Fehler zu korrigieren die dir bereits genannt wurden.
Falls du die vorgeschlagenen Klassen nicht nutzen darfst oder willst... zunächst Schreibst du eine Methode die zwei Jahreszahlen bekommt. Diese werden in Tage umgerechnet.(Da du ja später auch exakte Daten vergleichen willst). So was wie
Java:
Math.abs(jahr1-jahr2)*365
. Jetzt kommt es natürlich drauf an wie genau du Arbeiten willst!!! Aber eine Möglichkeit wäre z.B. zu Fragen ob mehr als 4 Jahre dazwischen liegen und einen Tag zu addieren. Das gibst du als Integer zurück. Jetzt hast du eine Methode die die Differenz zwischen zwei Jahreszahlen in Tagen zurückgibt.
Im nächsten Schritt erweiterst du deine Methode noch mit Monaten und Tagen.
Sauber wäre natürlich das ganze in Klassen und eigenständigen Methoden auszulagern!
public class tagezwischendaten
{
void jahre
(int vonjahr ,int bisjahr ,int jahresdifferenz)
{
int x = 365;
jahresdifferenz = bisJahr * x - vonJahr * x - x
}
}
public class TageZwischenDaten {
public void jahre (int vonJahr ,int bisJahr ,int jahresDifferenz) {
int x = 365;
// ; fehlt am ende der Zeile, bisJahr anstatt bisjahr analog vonjahr
jahresDifferenz = bisJahr * x - vonJahr * x - x;
}
}
Ob dein Algorithmus funktioniert weiß ich jetzt nicht, aber du solltest erstmal genauer auf die Syntax achten!
Weiterhin verstehe ich nicht, was du mit deiner Formel willst. Du willst bisJahr - vonJahr -1. Warum multipkizierst du dann die 365 darauf? Das ist nur unnötig. Ich kann doch bei dieser Formel die 365 ausklammern und bisJahr-vonJahr-1 steht da.