#java
#java
Вопрос:
Время задано как hh: mm: ss, поэтому время равно 23: 50: 45, как только оно достигнет полуночи, оно превратится в 00:00:00. Практический вопрос для моего экзамена попросил меня написать метод для этого, правильна ли моя логика или нет, меня беспокоят мои утверждения if else
public void increment()
{
if(seconds <= 59)
{
seconds ;
}
else if (seconds >= 60 amp;amp; minutes<= 59)
{
seconds == 0;
minutes ;
}
if(minutes >= 60 amp;amp; hours <= 23)
{
hours ;
minutes == 0;
}
else
{
hours == 0;
}
}
Комментарии:
1. Для начала, ваши часы никогда не должны показывать «60», это должно быть «00», поэтому ваши
if
утверждения «отклонены на единицу»2. По какой-либо конкретной причине вы не используете
Date
? Вы также смешиваетеseconds
иsecounds
.
Ответ №1:
Вы выполняете операции присваивания с использованием '=='
оператора эквивалентности. Исправьте это… Вместо minutes==0;
он должен читать minutes = 0;
и так далее, когда вы присваиваете ‘0’. ==
Результат будет равен boolean
. Вы также использовали secounds в каком-то месте вместо seconds
.
Посмотрите на это!
Комментарии:
1.
s/return/evaluate to
. Возвращаются только функции.2. Извините, я сейчас исправлю секунды, орфографические ошибки для меня дикие. И нет, я не могу попробовать это на netbeans или что-то еще, поскольку я на работе и у меня нет доступа.
3. Взгляните на ответ Матье. Ваша логика кажется немного неправильной. Надеюсь, у вас это сработает…
4. Заноза в заднице, написанные экзамены на Java, netbeans или любая другая среда IDE выявили бы их ошибки, и я мог бы правильно протестировать свою логику, но в условиях экзамена у меня нет к ним доступа, поэтому потребуется 3 часа постоянной проверки моей орфографии.
5. О … экзамены, да? Тогда удачи!
Ответ №2:
Вы можете сделать то же самое намного проще.
public void increment() {
seconds ;
if (seconds >= 60)
{
seconds = 0;
minutes ;
}
if(minutes >= 60)
{
hours ;
minutes = 0;
}
if(hours >= 24)
{
hours = 0;
}
}
Ответ №3:
Я думаю, что ваша логика неверна…
if(secounds <= 59)
{
seconds ;
}
приведет к увеличению количества секунд до 60 … или удалит else
в else if
следующем сразу после…
Как указано anirudh4444, для присвоения значения 0 следует использовать =
, а не ==
Я бы просто удалил все <=
условия. И замените последний как
if (hours >= 24) {
hours =0;
}
Кроме того, правильно пишутся секунды (в некоторых местах были ошибки, в одном месте они правильно написаны …)
Ваш код становится :
public void increment()
{
seconds ;
if (seconds >= 60)
{
seconds = 0;
minutes ;
}
if(minutes >= 60)
{
hours ;
minutes = 0;
}
if (hours >= 24)
{
hours = 0;
}
}