Hi, muss ein Programm schreiben uns sitze jetzt ein wenig auf der Leitung. Was mir noch fehlt ist folgender Punkt:
Die Differenz zweier Uhren in Sekunden ausgeben. Habe hier:
- int timeToSec () liefert die Uhrzeit in Anzahl Sekunden seit 00:00:00
- boolean equals (Uhr c) liefert true genau dann, wenn die Uhr dieselbe Uhrzeit besitzt wie Uhr c
- int compareTo (Uhr c) liefert -1, wenn Uhrzeit vor Uhrzeit von c ist, 0 bei Gleichheit, +1 sonst
Brauch ich diese Methoden überahaupt oder kann an das anders machen?
Laut meinem Testprogramm laufen aber beide Zeiten identisch, kann das sein?
Bitte um Hilfe. Vielen Dank!
und hier mein Testprogramm:
Die Differenz zweier Uhren in Sekunden ausgeben. Habe hier:
- int timeToSec () liefert die Uhrzeit in Anzahl Sekunden seit 00:00:00
- boolean equals (Uhr c) liefert true genau dann, wenn die Uhr dieselbe Uhrzeit besitzt wie Uhr c
- int compareTo (Uhr c) liefert -1, wenn Uhrzeit vor Uhrzeit von c ist, 0 bei Gleichheit, +1 sonst
Brauch ich diese Methoden überahaupt oder kann an das anders machen?
Laut meinem Testprogramm laufen aber beide Zeiten identisch, kann das sein?
Bitte um Hilfe. Vielen Dank!
Code:
public class Uhr {
private int h;
private int m;
private int s;
public Uhr() {
h = 0;
m = 0;
s = 0;
}
public Uhr(int h, int m, int s) {
this.h = h;
this.m = m;
this.s = s;
}
public void tick() {
this.s++;
if(this.s>59){
this.s-=60;
this.m+=1;
}
if(this.m>59){
this.m-=60;
this.h+=1;
}
if(this.h>23){
this.h-=24;
}
}
public void reset () {
h = m = s = 0;
}
public void setTime (int s) {
this.s = s;
}
public void setTime(int m, int s) {
this.m = m;
this.s = s;
}
public void setTime(int h, int m, int s ) {
this.h = h;
this.m = m;
this.s = s;
}
int geth () {
return h;
}
int getm () {
return m;
}
int gets () {
return s;
}
public int timeToSec() {
int gesamtSekunden = 0;
gesamtSekunden = gets() + getm()*60 + geth()*3600 ;
return gesamtSekunden;
}
public boolean equals (Uhr c) {
if (this == c) {
return true;
}
else
return false ;
}
public int compareTo (Uhr c) {
if (this.h > c.h) {
return -1;
}
if(this.h == c.h && this.m > c.m) {
return -1;
}
if(this.h == c.h && this.m == c.m && this.s > c.s) {
return -1;
}
if(this.h == c.h && this.m == c.m && this.s == c.s) {
return 0;
}
else
return -1;
}
public void showTime() {
System.out.println(geth() + ":" + getm()+ ":" + gets());
}
}
und hier mein Testprogramm:
Code:
import java.util.Calendar;
import java.util.GregorianCalendar;
public class TestprogrammA {
public static void main( String [] args){
//System.out.println("Nach wie vielen min soll verglichen werden? ");
//int a = new Integer(args[0]);
//a = a*60; //in Sekunden
int b = 0;
Calendar now = new GregorianCalendar();
int seconds = now.get(Calendar.SECOND);
int minutes = now.get(Calendar.MINUTE);
int hours = now.get(Calendar.HOUR);
Uhr test = new Uhr();
test = new Uhr(hours, minutes, seconds);
while(b != 60) {
test.showTime();
try {
Thread.sleep(1000);
b++;
test.tick();
}
catch (InterruptedException ie) {
}
}
Calendar jetzt = new GregorianCalendar();
int sec = jetzt.get(Calendar.SECOND);
int min = jetzt.get(Calendar.MINUTE);
int hou = jetzt.get(Calendar.HOUR);
Uhr vergleich = new Uhr();
vergleich = new Uhr(hou, min, sec);
vergleich.showTime();
}
}