PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ein Studi auf Abwegen, Java Frage, eigentlich einfach



Mysticman
06.04.2007, 17:16
public class Time
{
private int _h;
private int _m;
private int _s;

public Time (Time t){ //Copy-Konstruktor
_h = t.getH();
_m = t.getM();
_s = t.getS();
}

public Time(int h, int m, int s){ //Konstruktor, wo std usw uebergeben werden
_h = h;
_m = m;
_s = s;
}

public Time(){ //Konstruktor, wo alle Werte 0 gesetzt werden.
_h = 0;
_m = 0;
_s = 0;
}

public int getH(){
return _h ;
}

public int getM(){
return _m ;
}

public int getS(){
return _s ;
}

public void setH(int h){
if (_h >=0 && _h<=23)
{_h = h%3600 ;}
else {
System.out.println("Bitte Minutenwert zwischen 0 und 23 angeben!");
}
}
public void setM(int m){
if (_m >=0 && _m<=59)
{_m = m %60 ;}
else {
System.out.println("Bitte Minutenwert zwischen 0 und 59 angeben!");
}
}
public void setS(int s){
if (_s >=0 && _s<=59)
{_s = s %60 ;}
else {
System.out.println("Bitte Minutenwert zwischen 0 und 59 angeben!");
}
}
public void uhrzeitAusgeben(){
if (_h<=10)
System.out.print("0");
System.out.print(getH());
System.out.print(":");

if (_m<=10)
System.out.print("0");
System.out.print(getM());
System.out.print(":");

if (_s<=10)
System.out.print("0");
System.out.println(getS());
}

public Time getSumme(Time t){ //Addiert einfach Uhrzeit + Uhrzeit! ;))
int sec = getH()*3600 + getM()*60 +getS() + t.getH()*3600 + t.getM()*60 + t.getS();
int p1 = sec/3600 %3600;
int p2 = (sec -(p1*3600))/60 %60;
int p3 = sec - ((p1*3600)+(p2*60));
return new Time(p1,p2,p3);
}

public void addTime(Time t){
setH(this.getH() + t.getH());
setM(this.getM() + t.getM());
setS(this.getS() + t.getS());
}

public String toString()
{
return String.format ("<%1$02d:%2$02d:%3$02d>", this.getH (),
this.getM (), this.getS ());
}
}

------------------------------------------------------------------

public class Uebung1Treiber
{
public static void main(String[] args)
{
Time t1 = new Time();
Time t2 = new Time(4,44,46);
Time t3 = new Time(t2);
Time t4 = new Time(14,18,16);

t1.uhrzeitAusgeben(); // trotzdem tolle methoden^^ :P, obwohl man sich die ja auch mal ganz sparen koennte...
t2.uhrzeitAusgeben();
t3.uhrzeitAusgeben();
t4.uhrzeitAusgeben();

System.out.println(t1);
System.out.println(t2);
System.out.println(t3);
System.out.println(t4);

t2.getSumme(t4); //zwei Uhrzeiten werden aufeinander addiert!
System.out.println(t2.getSumme(t4));

t1.addTime(t3); // Uhrzeit t4 wird zu t1 addiert!
System.out.println(t1);
t1.addTime(t4); // Uhrzeit t4 wird nochmals zu t1 addiert!
System.out.println(t1);

}
}
---------------------------------------


sooo nun meine frage!!!
wenn ich 2 Zeiten addiere, z.b. 13:46:15 und 12:15:56 müsste ja 16:02:11 rauskommen^^...
aber es kommt raus 15:01:11 , verdammte AA ^^ ich kriegs einfach net raus :((
jmd grad nen gedankenblitz^^?

Cobinja
06.04.2007, 20:44
Die Methode getSumme() rechnet genau richtig.

Wenn ich 13:46:15 + 12:15:56 angebe, kommt bei mir 26:02:11 raus.

Du kannst in getSumme() übrigens auf die Modulo-Berechnung verzichten.

Mysticman
06.04.2007, 20:55
jo, hab die methodennamen einfach geändert^^ :P aber trotzdem wolte unser prof sdas so ham, dass die eine das genau umrechnet und dann genau diese zeit als neue zeit betrachtet... die andere soll nur addiern oder so hmz^^ egal ;)) vielen dank nochmal für dein testen ;))