Hallo,
ich habe mir ein kleines programm zusammen geschrieben, wo man einzeln das geburtsdatum und das heutige datum eingibt, also für 20.06.1987 dann 20 6 und 1987 und dann errechnet wieviele Tage man bis jetzt gelebt hat.
Meine fehlermeldung sieht so aus:
habe herraus gefunden dass der hepa speicher zu voll ist, vermute durch eine unbeabsichtigte endlosschleife... abe rich komme beim besten willen nicht drauf wo 🙁
von zeile 51 bis 55 steht folgendes:
mein kompletter code sieht wie folgt aus:
vielleicht kann mir ja jemand helfen, was ich da falsch gemacht hab 🙁
wäre superdankbar 🙂
Lg,
denise
ich habe mir ein kleines programm zusammen geschrieben, wo man einzeln das geburtsdatum und das heutige datum eingibt, also für 20.06.1987 dann 20 6 und 1987 und dann errechnet wieviele Tage man bis jetzt gelebt hat.
Meine fehlermeldung sieht so aus:
Code:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.lang.Integer.valueOf(Unknown Source)
at tagesrechner.Tagesrechner.main(Tagesrechner.java:55)
habe herraus gefunden dass der hepa speicher zu voll ist, vermute durch eine unbeabsichtigte endlosschleife... abe rich komme beim besten willen nicht drauf wo 🙁
von zeile 51 bis 55 steht folgendes:
Code:
/* wird hochgezählt bis zum heutigen Jahr und gespeichert */
ArrayList yearList = new ArrayList();
while(year != yearToday)
{ year = year ++;
yearList.add(year);}
mein kompletter code sieht wie folgt aus:
Code:
package tagesrechner;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Tagesrechner {
public static void main(String argv[]) throws IOException
{
String str;
int day;
int month;
int year;
int dayToday;
int monthToday;
int yearToday;
/* Das Geburtsdatum wird eingegeben und entsprechend gespeichert */
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Geben Sie den Tag Ihres Geburtsdatums ein:");
str = input.readLine();
day = Integer.parseInt(str);
System.out.print("Geben Sie den Monat 'Ihres Geburtsdatums ein:");
str = input.readLine();
month = Integer.parseInt(str);
System.out.print("Geben Sie das Jahr Ihres Geburtsdatums ein:");
str = input.readLine();
year = Integer.parseInt(str);
/* Das heutige Datum wird eingegeben und entsprechend gespeichert */
System.out.print("Geben Sie den aktuellen Tag an");
str = input.readLine();
dayToday = Integer.parseInt(str);
System.out.print("Geben Sie den aktuellen Monat an");
str = input.readLine();
monthToday = Integer.parseInt(str);
System.out.print("Geben Sie das aktuelle Jahr an");
str = input.readLine();
yearToday = Integer.parseInt(str);
/* wird hochgezählt bis zum heutigen Jahr und gespeichert */
ArrayList yearList = new ArrayList();
while(year != yearToday)
{ year = year ++;
yearList.add(year);}
/* es wird nachgesehen ob ein Schaltjahr vorhanden war */
ArrayList schaltjahr = new ArrayList();
for (int i = 0; i < yearList.size(); i++)
{
yearList.get(i);
if ( i%400 == 0 || (i%4 == 0 && i%100 != 0))
{ schaltjahr.add(1);
}
}
/* Definition Schaltjahr und normales Jahr der Monate */
int schaltjahrTage = 366;
int jahrTage = 365;
int schaltjahrFebruar = 29;
int januar = 31;
int februar = 28;
int märz = 31;
int april = 30;
int mai = 31;
int juni = 30;
int juli = 31;
int august = 31;
int september = 30;
int oktober = 31;
int november = 30;
int dezember = 31;
/* Berechnung der Tage des Geburtsmonats */
int monatTag = 0;
switch(month)
{
case 1: monatTag = januar - day;
case 2: if (year%400 == 0 || (year%4 == 0 && year%100 != 0))
{ monatTag = schaltjahrFebruar - day;
}
else { monatTag = februar - day;
}
case 3: monatTag = märz - day;
case 4: monatTag = april - day;
case 5: monatTag = mai - day;
case 6: monatTag = juni - day;
case 7: monatTag = juli - day;
case 8: monatTag = august - day;
case 9: monatTag = september - day;
case 10: monatTag = oktober - day;
case 11: monatTag = november - day;
case 12: monatTag = dezember - day;
}
/* Definition der Monate eines Jahres */
int jahr = 12;
int januarJ = 1;
int februarJ = 2;
int märzJ = 3;
int aprilJ = 4;
int maiJ = 5;
int juniJ = 6;
int juliJ = 7;
int augustJ = 8;
int septemberJ = 9;
int oktoberJ = 10;
int novemberJ = 11;
int dezemberJ = 12;
/* Berechnung der Monate im Geburtsjahr */
int jahrMonat = 0;
jahrMonat = jahr - month;
/* Berechnung der Jahre in Tagen */
int jahre = yearList.size();
int schaltjahre = schaltjahr.size();
int jahreK = 0;
int jahreC = 0;
int jahreS = 0;
int jahreKomplett = 0;
int jahreA = 0;
jahreK = jahre - schaltjahre;
jahreC = jahreK * 365;
jahreS = schaltjahre * 366;
jahreKomplett = jahreC + jahreS;
if (year%400 == 0 || (year%4 == 0 && year%100 != 0))
{ jahreA = jahreKomplett - 366;
}
else
{ jahreA = jahreKomplett - 365;
}
/* Berechnen der übrigen Tage im Geburtsjahr */
int monat = 0;
int jahrB = 0;
switch(month)
{ case 1: if (year%400 == 0 || (year%4 == 0 && year%100 != 0))
{jahrB = monatTag + 335; }
else {jahrB = monatTag + 334;}
case 2: jahrB = monatTag + 306;
case 3: jahrB = monatTag + 275;
case 4: jahrB = monatTag + 244;
case 5: jahrB = monatTag + 214;
case 6: jahrB = monatTag + 183;
case 7: jahrB = monatTag + 152;
case 8: jahrB = monatTag + 122;
case 9: jahrB = monatTag + 91;
case 10: jahrB = monatTag + 61;
case 11: jahrB = monatTag + 30;
case 12: jahrB = 31 - monatTag;
}
/* Berechnen der übrigen Tage im aktuellen Jahr */
int jahrC = 0;
if (year%400 == 0 || (year%4 == 0 && year%100 != 0))
{ jahrC = 366 - jahrB;
}
else { jahrC = 365 - jahrB;
}
/* zusammenfügen aller berechnungen */
int komplettesJahr = 0;
komplettesJahr = jahrC + jahrB + jahreA;
System.out.println("Sie haben bisher "+komplettesJahr+" Tage gelebt.");
}}
vielleicht kann mir ja jemand helfen, was ich da falsch gemacht hab 🙁
wäre superdankbar 🙂
Lg,
denise