Kom-pa-TI-bilitet
Få mitt Calendar objekt att uppdatera tiden? Java
Senast redigerat
Visa signatur
Senast redigerat
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?
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?
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);
}
Kom-pa-TI-bilitet
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.
Copyright © 1999–2024 Geeks AB. Allt innehåll tillhör Geeks AB.
Citering är tillåten om källan anges.