이것은 과제물입니다.Java 시계 알람 켜짐
알람이있는 Java 12 시간 시계를 만들려고합니다. 일정한 일을 한 후에 나는 마침내 달리고있다. 그러나 내가 알람을 울리면 설정된 시간보다 2-3 분 전에 꺼진다. 또한, 내가 잠을 잤을 때 (그것은 2 분 동안 잠잠해질 예정 임) 즉시 다음 순간부터 사라집니다. 나는 총 10 개의 수업을 가지고 있지만, 관련되어야하는 학생들을 추가하려고합니다. Time
과 TimeManager
. 나는 자바를 막 시작했으며, 힘든 시간을 보냈습니다. 이것이 바보 같은 질문이라면 미안합니다.
Time
:
public class Time {
private int hour;
private int minute;
public Time(int initHour, int initMinute) {
if (1 <= hour && hour <= 12) {
hour = initHour;
}
else if (hour == 0) {
hour = 12;
}
if (0 <= minute && minute <= 59) {
minute = initMinute;
}
}
public void addOneMinute() {
minute++;
if (minute == 59) {
incrementHour();
minute = 0;
}
}
public void incrementHour() {
hour++;
if (hour > 12) {
hour = 1;
}
}
public void incrementMinute() {
minute++;
if (minute == 59) {
minute = 0;
}
}
public int getHour() {
if (hour >= 1 && hour <= 12) {
}
return hour;
}
public int getMinute() {
if (minute >=0 && minute <= 59) {
}
return minute;
}
public boolean equals(Time time) {
if (hour == hour && minute == minute) {
return true;
}
else {
return false;
}
}
}
TimeManager
:
public boolean equals(Time time) {
if (hour == hour && minute == minute) {
return true;
}
else {
return false;
}
}
}
표현 hour == hour
는 비교입니다 : 다른 것들 amoungst에
public class TimeManager {
private static final int SNOOZE_DURATION_IN_MINUTES = 2;
private Time currentTime;
private Time alarmTime;
private Time snoozeTime;
private Display display;
private ModeManager modeMgr;
private Alarm alarm;
public TimeManager() {
currentTime = new Time(12,0);
alarmTime = new Time(12,0);
snoozeTime = new Time(12,0);
}
public void setDisplay(Display newDisplay) {
display = newDisplay;
showCurrentTime();
}
public void setModeManager(ModeManager newModeMgr) {
modeMgr = newModeMgr;
}
public void setAlarm(Alarm newAlarm) {
alarm = newAlarm;
}
public void incrementCurrentMinute() {
currentTime.addOneMinute();
Mode mode = modeMgr.getMode();
if (mode == mode.ALARM_ON || mode == mode.ALARM_OFF || mode == mode.SET_TIME) {
updateDisplay();
}
if (mode == mode.ALARM_ON) {
if (currentTime.equals(alarmTime) || currentTime.equals(snoozeTime)) {
soundAlarmIfNecessary();
}
}
}
public void incrementCurrentHour() {
currentTime.incrementHour();
Mode mode = modeMgr.getMode();
if (mode == mode.ALARM_ON || mode == mode.ALARM_OFF || mode == mode.SET_TIME) {
updateDisplay();
}
if (mode == mode.ALARM_ON) {
if (currentTime.equals(alarmTime) || currentTime.equals(snoozeTime)) {
soundAlarmIfNecessary();
}
}
}
public void incrementAlarmMinute() {
alarmTime.incrementMinute();
Mode mode = modeMgr.getMode();
if (mode == mode.SET_ALARM) {
updateDisplay();
}
if (mode == mode.ALARM_ON) {
if (currentTime.equals(alarmTime)) {
soundAlarmIfNecessary();
}
}
}
public void incrementAlarmHour() {
alarmTime.incrementHour();
Mode mode = modeMgr.getMode();
if (mode == mode.SET_ALARM) {
updateDisplay();
}
if (mode == mode.ALARM_ON) {
if (currentTime.equals(alarmTime)) {
soundAlarmIfNecessary();
}
}
}
public void snooze() {
while (alarm.isOn()) {
alarm.off();
int hour = currentTime.getHour();
int minute = currentTime.getMinute();
minute += SNOOZE_DURATION_IN_MINUTES;
if (minute > 59) {
minute -= 60;
++hour;
}
snoozeTime = new Time(hour, minute);
}
}
public void showCurrentTime() {
display.showHour(currentTime.getHour());
display.showMinute(currentTime.getMinute());
}
public void showAlarmTime() {
display.showHour(alarmTime.getHour());
display.showMinute(alarmTime.getMinute());
}
private void updateDisplay() {
Mode mode = modeMgr.getMode();
if (mode == mode.SET_TIME || mode == mode.ALARM_ON || mode == mode.ALARM_OFF) {
showCurrentTime();
}
else {
showAlarmTime();
}
}
private void soundAlarmIfNecessary() {
Mode mode = modeMgr.getMode();
if (mode == mode.ALARM_ON && currentTime.equals(alarmTime) || currentTime.equals(snoozeTime)) {
alarm.on();
}
}
}
당신이 59를 확인 후 minute''증가 고려 Time.addOneMinute'이 대신 당신은 다음과 같이 주어진
time
인수의hour
필드와 비교하려면, 당신이 원하는 것을 명확하지 않다. 그렇지 않으면 59 대신에 58에서 0으로 롤오버됩니다. 'Time'의 모든 increment/addOne 메소드에 대해 동일한 오류가 발생합니다. – Gus정말 고마워요 !! 나는 그것을 깨닫지도 못했다. 너와 @ jazzbassrob 사이에 완벽하게 작동하고있다! –