fehlermeldung heap space, endlosschleife???

Status
Nicht offen für weitere Antworten.

VirgelZimble

Mitglied
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:
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
 

Leroy42

Top Contributor
Hobbit_Im_Blutrausch hat gesagt.:
Du erhöhst "year" niemals.

Erhöht wird year zwar, danach aber sofort wieder auf den
ursprünglichen Wert zurückgesetzt:

Code:
year = year ++;
year++ erhöht zuerst year, die Zuweisung weist
year aber gleich danach den Wert zu, den es
vor der Erhöhung hatte.

Einfach nur
Code:
year++;
ohne Zuweisung schreiben.
 

dirk.be

Mitglied
Ich nehme mal an, dass Dein Projekt der Übung dient. In der Praxis kannst Du Dir das Leben natürlich einfach machen, wenn Du die von Java bereit gestellten Datumsklassen (Date, Calendar) benutzt. Das könnte dann etwa so aussehen:
Code:
import java.io.*;
import java.text.*;
import java.util.*;

public class TageBisHeute {
	
	public static void main(String[] args) {
		
		final long MILLISECONDS_PER_DAY = 86400000L;
		
		BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
		System.out.print("Datum (DD.MM.JJJJ): ");
		try {
			String input = reader.readLine();
			if (input != null) {				
				DateFormat df = DateFormat.getDateInstance();		
				Date d = df.parse(input);		
				System.out.printf("Tage bis heute: %d%n", 
						(new Date().getTime() - d.getTime()) / MILLISECONDS_PER_DAY);							
			}
		}
		catch (IOException e) {
			System.err.println(e.getMessage());
		}
		catch (ParseException e) {
			System.err.println(e.getMessage());
		}
	}
}
 

VirgelZimble

Mitglied
joa ^^, mein freund hatte das für c# als übung und ich dachte mir ich mach das mal mit java. die datefunktion durfte man dafür nicht benutzen ;)

danke für eure hilfe :) hab da jetzt ne for-schleife draus gemacht und jetzt klappts.

Lg,
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Mick P. F. Wie kriege ich die Fehlermeldung "java: symbol lookup error: ..." weg? Allgemeine Java-Themen 11
thor_norsk Eclipse - Fehlermeldung - JavaFX Allgemeine Java-Themen 24
Zrebna Was bedeutet folgende Fehlermeldung...? Allgemeine Java-Themen 1
A Die unerklärliche Fehlermeldung Allgemeine Java-Themen 5
O long Fehlermeldung Allgemeine Java-Themen 8
ReinerCoder Eclipse Fehlermeldung - The constructor Double(double) is deprecated Allgemeine Java-Themen 8
F Fehlermeldung: java.lang.NoClassDefFoundError: org/apache/commons/net/ntp/NTPUDPClient Allgemeine Java-Themen 6
N Fehlermeldung beheben Allgemeine Java-Themen 6
J Fehlermeldung bei Ausführung von .jar-Datei Allgemeine Java-Themen 9
M stream.Collectors Fehlermeldung Allgemeine Java-Themen 1
R Schlüsselworte "Throw new exception" gibt nicht den String als Fehlermeldung aus Allgemeine Java-Themen 2
N Neustarten des Codes nach der Fehlermeldung Allgemeine Java-Themen 17
M Java-Programminstallation stoppt mit Fehlermeldung Allgemeine Java-Themen 1
C Fehlermeldung Allgemeine Java-Themen 1
M Java Virtual Machine Launcher (Fehlermeldung) Allgemeine Java-Themen 8
0 Code startet nicht (Keine Warnung/Fehlermeldung) Allgemeine Java-Themen 4
Shido JDK installieren Eclipse - Fehlermeldung Allgemeine Java-Themen 4
E Fehlermeldung vor dem Programm code Allgemeine Java-Themen 1
K Interpreter-Fehler Java Zahl Raten Spiel- Fehlermeldung mir unbekannt Allgemeine Java-Themen 12
C Hilfe bei einer Fehlermeldung Allgemeine Java-Themen 5
H Java Mail Fehlermeldung: java.lang.NoClassDefFoundError: javax/mail/internet/AddressException Allgemeine Java-Themen 5
G UUencoding bring Fehlermeldung: No beginn line / Missing 'end' line Allgemeine Java-Themen 0
J Runnable jar-File: Fehlermeldung Allgemeine Java-Themen 2
0 Lösungsweg Client Server Kommunikation Fehlermeldung ausgeben Allgemeine Java-Themen 12
A Fehlermeldung "No vertex field found" Allgemeine Java-Themen 18
K Fehlermeldung mit jar-Datei Allgemeine Java-Themen 2
C Button geben Fehlermeldung aus Allgemeine Java-Themen 5
Hindi93 Fehlermeldung UnsatisfiedLinkError Allgemeine Java-Themen 8
N Hibernate und Fehlermeldung Allgemeine Java-Themen 18
I Fehlermeldung im zusammenhang mit String Allgemeine Java-Themen 5
hdi JVM kackt ab mit spezieller Fehlermeldung Allgemeine Java-Themen 8
A Jar-File startet ohne Aktion und ohne Fehlermeldung Allgemeine Java-Themen 4
Daniel_L Mac-spezifische Fehlermeldung auf nicht OS-X-Systemen Allgemeine Java-Themen 9
E Datenbank/iBatis Fehlermeldung Allgemeine Java-Themen 4
G RCP Eclipse Fehlermeldung beim export Allgemeine Java-Themen 5
J Was bedeutet diese Fehlermeldung? Allgemeine Java-Themen 4
0 case orphaned Fehlermeldung! Allgemeine Java-Themen 2
T Merkwürdige Fehlermeldung Allgemeine Java-Themen 5
D jdk fehlermeldung probleme wegen der partition? Allgemeine Java-Themen 10
P JFreeChart Fehlermeldung Allgemeine Java-Themen 2
@ [Eclipse] Fehlermeldung bei import-Anweisung Allgemeine Java-Themen 3
T Unbekannte Fehlermeldung + Lösung? Allgemeine Java-Themen 4
G Fehlermeldung bei RFC Allgemeine Java-Themen 4
G Nachdem die neuste Version v. Java installiert-Fehlermeldung Allgemeine Java-Themen 22
T Fehlermeldung Allgemeine Java-Themen 4
P Fehlermeldung Allgemeine Java-Themen 15
G Split String Array bringt Fehlermeldung Allgemeine Java-Themen 7
P Fehlermeldung Allgemeine Java-Themen 8
MQue Fehlermeldung Allgemeine Java-Themen 5
P ständige Fehlermeldung im Eclipse Allgemeine Java-Themen 2
E Fehlermeldung Allgemeine Java-Themen 3
M Fehlermeldung! (Problem mit einem Prog) Allgemeine Java-Themen 5
E JExcel- Zugriff auf leere Zellen kommt eine Fehlermeldung Allgemeine Java-Themen 6
D JavaMail SMTP Fehlermeldung Allgemeine Java-Themen 2
D JavaMail Fehlermeldung Allgemeine Java-Themen 4
K log4j - Fehlermeldung Allgemeine Java-Themen 2
T Konsole "Fehlermeldung": error hereerror here Allgemeine Java-Themen 4
B Fehlermeldung von dispatcher.forward abfangen Allgemeine Java-Themen 2
A JSP include - keine Fehlermeldung Allgemeine Java-Themen 2
P Fehlermeldung "Die Klasse sun/plugin/javaRunTime kann n Allgemeine Java-Themen 3
E Java Fehlermeldung java.lang.NoClassDefFoundError Allgemeine Java-Themen 3
J Fehlermeldung Allgemeine Java-Themen 5
D Fehlermeldung in .txt speichern Allgemeine Java-Themen 2
S Fehlermeldung Allgemeine Java-Themen 2
P Fehlermeldung beim Speichern eines java files Allgemeine Java-Themen 5
S Fehlermeldung bzgl. VM -> ständiger Absturz Allgemeine Java-Themen 7
S fehlermeldung java.lang.OutOfMemoryError Allgemeine Java-Themen 5
sokobus Fehlermeldung Allgemeine Java-Themen 25
A Fehlermeldung: cannot be resolved Allgemeine Java-Themen 5
C Frage zur Fehlermeldung Allgemeine Java-Themen 3
G Fehlermeldung "cannot resolve symbol" Allgemeine Java-Themen 7
N Fehlermeldung Allgemeine Java-Themen 7
T Hilfe!!! Fehlermeldung... "unable..." Allgemeine Java-Themen 2
E Wie Java Heap Space vergrößern? Allgemeine Java-Themen 3
A Heap-Sort Allgemeine Java-Themen 2
L Java OutOfMemoryError Java heap space Allgemeine Java-Themen 3
H Änderung im maximalen heap space unter Windows 7 ?! Allgemeine Java-Themen 5
N Mögliches heap space lokalisieren Allgemeine Java-Themen 11
D Grundsätzliche Fragen zum Heap Space Allgemeine Java-Themen 12
D Datentypen Cache Images Heap Space Error Allgemeine Java-Themen 7
Thallius Wie mache ich eine Java App mit Icon startbar die mehr Heap Speicher braucht? Allgemeine Java-Themen 3
T jstat Heap(Size/Usage) PermGen(Size/Used) vs JVisual VM Allgemeine Java-Themen 2
H Frage wegen Heap-Speicher Allgemeine Java-Themen 2
L java.lang.OutOfMemoryError: Java heap space Allgemeine Java-Themen 10
R Referenzen im Heap anzeigen Allgemeine Java-Themen 3
S Compiler-Fehler Heap space! Allgemeine Java-Themen 2
V Java Heap Size -Xmx1024m reicht nicht! Allgemeine Java-Themen 14
C Method Area, Stack, Heap Allgemeine Java-Themen 7
A Umgebungsvariable Kann Heap Space nicht vergrößern Allgemeine Java-Themen 6
T Objekt 2x deserialisieren, aber nur 1x im Heap haben? Allgemeine Java-Themen 4
M *.jar >>> *.exe und "heap size" Allgemeine Java-Themen 11
E Konfigurieren des Java Heap-Spaces Allgemeine Java-Themen 5
D Java Heap error trotz anpassungen mit -xmx Allgemeine Java-Themen 4
Guybrush Threepwood Heap-Space "überwinden" Allgemeine Java-Themen 2
O Problem mit dem Heap Space (Speicherüberlauf) Allgemeine Java-Themen 12
S Java heap space zu klein? Allgemeine Java-Themen 6
A Heap in Jcreator erhöhen? Allgemeine Java-Themen 5
P Java Heap Size feststellen Allgemeine Java-Themen 6
K Heap-Volllaufen bei ArrayList<Integer> Allgemeine Java-Themen 9
B Java Heap Space Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben