Få mitt Calendar objekt att uppdatera tiden? Java

Permalänk
Medlem

Få mitt Calendar objekt att uppdatera tiden? Java

Så jag har min klass som ska visa tiden samt uppdatera den och visa den igen. Min andra klass anropar Time klassen som först kör toString, sedan update och sedan toString igen. Problemet är att det inte funkar,

public class Time { private int hour; private int minute; private int second; public Time(){ Calendar cal = Calendar.getInstance(); cal.setTime( new Date() ); hour = cal.get(Calendar.HOUR_OF_DAY); minute = cal.get(Calendar.MINUTE); second = cal.get(Calendar.SECOND); } public int getHour() { return hour; } public int getMinute() { return minute; } public int getSecond() { return second; } public String toString(){ return hour + ":" + minute + ":" + second; } public void update(){ //-Alltså denna metoden som inte funkar som jag vill cal.setTime( new Date() ) } }

Metoden update hittar inte mitt cal objekt. Jag har testat att sätta cal2=cal men utan resultat. Jag förstår problemet, bara inte hur jag löser det. Jag har löst det genom att lägga till

Calendar cal = Calendar.getInstance(); cal.setTime( new Date() ); hour = cal.get(Calendar.HOUR_OF_DAY); minute = cal.get(Calendar.MINUTE); second = cal.get(Calendar.SECOND);

I min update metod, men det måste ju finnas en elegantare lösning än att göra 2 objekt?

Permalänk

hur ser all din kod ut? t ex så ser jag inte main metoden.
samt vad vill du göra? hur har du tänkt det?

Permalänk
Medlem
Skrivet av Baxtex:

Så jag har min klass som ska visa tiden samt uppdatera den och visa den igen. Min andra klass anropar Time klassen som först kör toString, sedan update och sedan toString igen. Problemet är att det inte funkar,

public class Time { private int hour; private int minute; private int second; public Time(){ Calendar cal = Calendar.getInstance(); cal.setTime( new Date() ); hour = cal.get(Calendar.HOUR_OF_DAY); minute = cal.get(Calendar.MINUTE); second = cal.get(Calendar.SECOND); } public int getHour() { return hour; } public int getMinute() { return minute; } public int getSecond() { return second; } public String toString(){ return hour + ":" + minute + ":" + second; } public void update(){ //-Alltså denna metoden som inte funkar som jag vill cal.setTime( new Date() ) } }

Metoden update hittar inte mitt cal objekt. Jag har testat att sätta cal2=cal men utan resultat. Jag förstår problemet, bara inte hur jag löser det. Jag har löst det genom att lägga till

Calendar cal = Calendar.getInstance(); cal.setTime( new Date() ); hour = cal.get(Calendar.HOUR_OF_DAY); minute = cal.get(Calendar.MINUTE); second = cal.get(Calendar.SECOND);

I min update metod, men det måste ju finnas en elegantare lösning än att göra 2 objekt?

Släng in den i update så är saken biff!

public Time() { update(); } public void update() { Calendar cal = Calendar.getInstance(); cal.setTime( new Date() ); hour = cal.get(Calendar.HOUR_OF_DAY); minute = cal.get(Calendar.MINUTE); second = cal.get(Calendar.SECOND); }

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Det är väl klart att den inte hittar ditt cal objekt, då du deklarerar det innanför constructorn? Hour, minute och second deklarerar du utanför, varför inte kalendern?

Lägg en private Calendar cal före konstruktorn så borde det lösa sig (och ta bort Calendar framför cal inne i konstruktorn).

Edit: Du saknar även ett semikolon i din update-metod, och så måste du uppdatera hour, minute och second i din update-metod.