Я работаю над назначением mooc.fi, и я действительно зацикливаюсь на назначении часов. Я не хочу решения, но совет о том, как достичь своего решения, пока я все еще участвую, и действительно нужно выяснить, как с этим справиться. Если вы не знакомы с mooc, текущий раздел посвящен тому, как работать с объектами внутри объектов.Запросить справку
Он состоит из трех классов, основной создает часы, а ограниченный счетчик - это то, что делает часы тикающими. Я получаю его для печати на экране, но когда введен пользовательский вводный ввод, он сначала печатает его, а затем сбрасывает значение обратно до нуля. Может кто-нибудь указать мне в правильном направлении, пожалуйста? Извините за основной вопрос, все еще пытаясь выучить этот Java-язык!
Главная
public class Main {
public static void main(String[] args) {
Clock clock = new Clock(23, 59, 50);
int i = 0;
while(i < 20) {
System.out.println(clock);
clock.tick();
i++;
}
}
}
Часы
public class Clock {
private BoundedCounter hours;
private BoundedCounter minutes;
private BoundedCounter seconds;
public Clock(int hoursAtBeginning, int minutesAtBeginning, int secondsAtBeginning) {
// the counters that represent hours, minutes and seconds are created and set to have the correct initial values
this.hours = new BoundedCounter(hoursAtBeginning);
this.hours.setValue(hoursAtBeginning);
this.minutes = new BoundedCounter(minutesAtBeginning);
this.minutes.setValue(minutesAtBeginning);
this.seconds = new BoundedCounter(secondsAtBeginning);
this.seconds.setValue(secondsAtBeginning);
}
public void tick() { //increases the time
this.seconds.next();
if (this.seconds.getValue() == 0) {
this.minutes.next();
if (this.minutes.getValue() == 0) {
this.hours.next();
}
}
}
public String toString() {
// returns the string representation
return hours + ":" + minutes + ":" + seconds;
}
}
BoundedCounter
public class BoundedCounter {
private int value;
private int upperLimit;
public BoundedCounter(int upperLimit) {
// write code here
this.value = 0;
this.upperLimit = upperLimit;
}
public void next() {
// write code here
if (value < upperLimit) {
value++;
} else {
value = 0;
}
}
public int getValue() {
return value;
}
public void setValue(int value) {
if (value >= 0 && value <= upperLimit) {
this.value = value;
}
}
@Override
public String toString() {
if (value < 10) {
return "0" + value;
}
return "" + value;
}
}
Вы передаете текущий время до BoundedCounter, но BoundedCounter ожидает верхнюю границу, а не текущее время. –
Вы знаете, что смешно, я на самом деле правильно это установил, а затем изменил его. Логика предполагает, что верхний предел часа равен 23, в течение минуты - 59, а также в течение секунды. Я вручную их установил, а затем использовал setValue() для других тестов. Спасибо, что помогли мне, ребята !!! – Ohlaph
Добро пожаловать в StackOverflow. Обязательно возьмите короткий тур по адресу http://stackoverflow.com/tour. Вы можете * увеличить * несколько ответов, которые вы найдете полезными, щелкнув соседний треугольник и * принять * один ответ, щелкнув соседнюю галочку. –