Få mitt Calendar objekt att uppdatera tiden? Java

Trädvy Permalänk
Medlem
Plats
Skåne
Registrerad
Jan 2011

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?

Asrock P67 Extreme 4 | i5 2500K@4,5Ghz | Asus GTX 970 black | 2x Intel 520 180gb, 2x WD blue 5tb | 8GB Corsair XMS3 + 8GB Hyper x Fury | EVGA Supernova G2 750W Gold | Silverstone FT02

https://prism-break.org/sv/

Trädvy Permalänk
Medlem
Plats
stockholm
Registrerad
Aug 2005

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?

Trädvy Permalänk
Medlem
Plats
i din garderob
Registrerad
Sep 2007
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); }

Bilanaloger är som Volvo — varenda svenne kör med dem

Trädvy Permalänk
Medlem
Plats
Finland
Registrerad
Maj 2004

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.