# Zeitrechner erstellen??



## Ravenhall (15. Jan 2012)

Hallo ihr lieben, 

ich hab da leider ein kleines Problem und hoffe das ihr mir helfen könnt. 
Ich würde gerne ein Programm schreiben das mit einem Demo Programm zum Ausführen ist und mit einem "Methoden" Programm zusammenarbeitet. 
Die Aufgabe ist, das ich zwei Zahlen in Sekunden einlesen lasse, diese sollen dann bereits als z.B Stunden:Minuten:Sekunden + Stunden:Minuten:Sekunden = Stunden:Minuten:Sekunden berechnet werden und dann auch die ganze Rechnung ausgegeben werden. Ich hab ansätze bekommen, jedoch weis ich nicht wirklich wie ich diese umsetzen kann. Würde mich freuen wenn ihr mir helfen könntet. Hier einmal das, was ich bis jetzt in meiner "Methoden" Datei stehen habe.
Momentan hab ich Probleme wie ich die Sekunden in die obere Form bekomme um sie zu berechnen oder kann ich einfach die Sekunden zusammenrechnen und die Rechnung dann trotzdem in dem oberen Format ausgeben lassen?

Danke für eure Hilfe


```
public class TimePeriod {													 //Konstruktor, Zeitintervall 0

int Zeitintervall = 0;
 int sec = 0;



	public TimePeriod(int h, int min, int sec){ 							//Konstruktor mit entsprechenden Teilwerten

	Zeitintervall = sec;

		h = sec/3600; 
      	 sec = sec%3600;												// eine Stunde besteht aus 3600 sekunden
      	
	 min = sec/60; 
       	 sec = sec%60;													// eine minute besteht aus 60 sekunden
       }
 

public void TimePeriod add(int plus, int start){ 								//Addition

	
	if(start > 0){
	start + ende = plus;
}

}

public void TimePeriod diff(int minus, int ende){	
																				
		if (ende <= 0){
		start - ende = minus;
	}
																					//Differenz: this – other
}

public int seconds(){						//Zeitintervall in Sekunden
	
	start = newStart;
	end = newEnd;
	}	

public String toString(){ 
																			//Darstellung in der Form Std:Min:Sek 
return (h+min+sec) ;
}

 	//System.out.println(String.format("%02d:%02d:%02d", Intervall.h(), Intervall.min(), Intervall.sec()))  ;
	
	}
```


----------



## HimBromBeere (15. Jan 2012)

Also rein syntaktisch erstmal, folgendes geht schonmal nicht:

```
start + ende = plus;
```
Fehler: links vom Zuwesiungszeichen muss eine Variable stehen (so oder so ähnlich sollte die entsprechende Fehlermeldung lauten). 
Es sollte wahrscheinlich eher wie folgt lauten:

```
ende = start + plus;
```
Selbiges gilt übrigens auch für deinen Code aus Zeile 33 äquivalent.


Nun aber nochmal zum eigtl. Problem: dein Nutzer soll ein beliebiges Zeitintervall in Sekunden angeben, welches du in hh/mm/ss umrechnen willst, habe ich das richtig verstanden?


----------



## Ravenhall (15. Jan 2012)

Nein tut mir leid, ich hab grad gesehn die Daten müssen als Stunde, Minute und Sekunde eingegeben werden. Mein Fehler. Aber der Rest stimmt!


----------



## njans (15. Jan 2012)

Hmm also dann verstehe ich das Problem nicht!?
Der Nutzer gibt Werte hh/mm/ss ein und du sollst diese als hh/mm/ss ausgeben?


----------



## HimBromBeere (15. Jan 2012)

```
public TimePeriod(int h, int min, int sec){                             //Konstruktor mit entsprechenden Teilwerten
 
    Zeitintervall = sec;
 
    h = sec/3600; 
    sec = sec%3600;                                                // eine Stunde besteht aus 3600 sekunden
        
    min = sec/60; 
    sec = sec%60;                                                  // eine minute besteht aus 60 sekunden
}
```

Den Sinn dieses Konstruktors versteh ich nicht. Du möchtest vom Benutzer sec entgegennehmen und diese in H und m umrechnen? Java unterstützt soweit ich weiß aber kein Call-By-Reference für simple Datentypen wie int (Objekte dagegen werd immer über Referenzen übergeben). Somit wird dein h = ... auch nicht wieder zurückgegeben. 

Jetzt erklär nochmal bitte, was du vom Benutzer deiner Anwendung erwartest und in welches Format diese Eingabe umgerechnet werden soll.


----------



## Ravenhall (15. Jan 2012)

Also: hier mal ein Beispiel wie es aussehen soll. 
Die Teilwerte für Minuten und Sekunden dürfen nur im Bereich von 0 bis 59 sein, eine negatives Zeitintervall wird durch ein Minus vor dem Stundenwert angegebenen.

Beispiele:
21:34:49 + 4:5:12 = 25:40:1
0:10:5 – 2:8:18 = -1:58:13 

die ersten beiden zahelnwerte sind vom benutzer eingegeben und das ergebnis soll ich berechnen. Und auch so soll die Ausgabe aussehen. 
Hatte mich oben falsch ausgedrückt sorry, ich weis leider nicht wie ich ältere Beiträge von mir ändere.


----------



## Final_Striker (15. Jan 2012)

Zeit einlesen und in Sekunden umrechnen. Mit Sekunden kannst du dann rechnen. Anschließend bei der Ausgaben wieder in std, min und sek zurück umrechnen.


----------



## Ravenhall (15. Jan 2012)

So ich hab das mal versucht nochmal zu machen. Also soweit bin ich jetzt. Leider spuckt mir JGrasp immer eine Fehlermeldung in der ersten Zeile aus. 
(TimePeriod.java:1: '{' expected
 public class TimePeriod(){ 			//Konstruktor, Zeitintervall 0
                               ^

```
public class TimePeriod(){         //Konstruktor, Zeitintervall 0

 int plus, minus, time1=0, time2=0;

public TimePeriod(int h, int min, int sec){											 //Konstruktor mit entsprechenden Teilwerten


time1 = h1*3600 + min1*60 + sec1;
time2 = h2*3600 + min2*60 + sec2;

}


public TimePeriod add(TimePeriod other){				 //Addition

	if(time1 > 0){
		plus = time1 + time2;
	}
}

public TimePeriod diff(TimePeriod other){    	//Differenz: this – other

	if (time2 <= 0){
		minus = time1 - time2;
	}
}

public int seconds(){		//Zeitintervall in Sekunden

h1 = h1 * 3600 ;
min1 = min1 * 60;
sec1 = sec1;

time1 = h1+m1+sec1;

h2 = h2 * 3600 ;
min2 = min2 * 60;
sec2 = sec2;

time2 = h2+m2+sec2;

}

public String toString(){					 //Darstellung in der Form Std:Min:Sek 

 System.out.println(h + ":" + min + ":" + sec ) ;
 }
}
```


----------



## Final_Striker (15. Jan 2012)

```
public class TimePeriod(){
```
 <--

Hinter dem Klassenname schreibt man keine Klammern hin.


----------



## Ravenhall (15. Jan 2012)

ok super danke, damit ist die Fehlermeldung weg.


----------



## HimBromBeere (15. Jan 2012)

Kann ja sein, dass ich mich irre, aber sollte deine Klasse nicht eher TimeStamp heißen (auch wenn es die in Java schon gibt, musste halt bei der package-Angabe aufpassen)? Schließlich geht es ja nur um die Verwaltung eines Zeitstempels, den du mit einem anderen vergleichen möchtest. Sollte dem so sein, sollte deine Klasse auch keine Variablen wie minus, plus und v.a. t2 kennen, sondern lediglich seine eigene Zeit in Sekunden (und vlcht. noch um Rechenzeit zu sparen, die aus den Sekunden berechneten Werte für h, m und s). Alle Berechnungen beziehen sich dann AUSSCHLIEßLICH über diese Werte.


----------

