omgnametaken Ответов: 5

Поиск следующего прыжкового года


Код работает, когда год является високосным, но когда это не так, мне нужен код, чтобы
найдите следующий високосный год и распечатайте его. Цикл while, который у меня сейчас есть, будет продолжать считать годы, например:2002,2003,2004 an печатает их. Что я могу использовать, чтобы подсчитать цикл while в следующем году и снова провести его через процесс оценки, пока он не достигнет следующего прыжкового года? Могу ли я поместить туда какое-то заявление до тех пор, пока? Спасибо ребята


 public static void main(String[] args) {

 int leapyear = 2001;
 boolean isleapyear;

 if (((leapyear % 4 == 0 && leapyear % 100 != 0||leapyear % 400 ==0)))
{
    isleapyear = true;
 }
 else
 {
     isleapyear = false;
 }
 if(isleapyear = true)
 {
    System.out.println(leapyear+" is a leapyear");
 }
 else
 {
     while(isleapyear=false)
     {
        leapyear = leapyear++;
         System.out.println(leapyear+ "is the next leapyear");
     }
 }
}

5 Ответов

Рейтинг:
2

Richard MacCutchan

 if(isleapyear = true)

while(isleapyear=false)

Немного не хватает = знаки в этих двух утверждениях. Кроме того, ваш цикл while не должен содержать System.out.println() заявление, в противном случае он может утверждать, что 2003 год является високосным.

[редактировать]
На самом деле это так while петля бессмысленна, даже после исправления = к == это не сработает.
[/редактировать]


Рейтинг:
2

Verma.No.1

Я извинился за это. Как я мог совершить такую ошибку? Ну, во всяком случае, вот правильный вариант.
Это не
leapyear = leapyear % 4 ;
но
leapyear = leapyear+leapyear % 4 ;
Еще раз прошу прощения за эту глупую ошибку.
Надеюсь, теперь все будет хорошо, и вы поймете смысл, который я хочу передать в последнем решении, а также получите логику за этим.
Спасибо.
Викас Верма


Рейтинг:
1

Ambesha

Используйте перерыв; сайта когда он найден следующий високосный год в ваш цикл while.

спасибо,
Амбеша


Рейтинг:
1

Verma.No.1

Просто сделайте небольшое изменение в конце кода, как показано на рисунке.

i f ( i s l e a p y e a r = t r u e )
{ S y s t em . o u t . п р и н т л и Н ( Л Е Р Г Е Р + "И З А Л Е а п г е р" ) ; } е л ь е { leapyear = leapyear % 4 ; З У С Т ЭМ . o u t . p r i n t l n ( l e a p y e a r + " i s t h e n e x t l e A p y e a r " ) ; } } }

объяснение логики кода.
Возьмем, к примеру, 2014 год. Теперь 2014 mod 4=2, то есть остаток, когда мы делим 2014 на 4, равен 2. Это означает, что 2014 год на 2 меньше, чем следующий кратный 4.
Точно так же leapyear делится на 4.
Примечание:- Я не использую "leapyear % 400", так как он дает первый leapyear после 100 лет.
Надеюсь, вы получите ответ, а также поймете его логику.
С теплыми пожеланиями.
Викас Верма


Рейтинг:
0

TorstenH.

Вам нужно создать функцию рядом с основной функцией и вызвать ее из while.
Функция должна выполнять проверку високосного года.

Используйте уже рекомендованные break чтобы разбить цикл while, если вы хотите найти только следующий - не делайте этого, если вы хотите найти все (я бы все равно ограничил это определенным максимальным значением, потому что в противном случае код будет работать вечно).