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