Изменение часов, минут и секунд

#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;
}
}