Probleme bei Systemzeit

deiwid

Grünschnabel
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!


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();
		
	}
}
 
In deinem Testprogramm laufen die Uhren natürlich identisch, weil sie auf die gleiche Art eingestellt werden. Aber generell müsste dies die Aufgabe lösen:
Code:
System.out.println("Diff: " + (test.timeToSec() - vergleich.timeToSec()));
 
Zurück