2016-02-04 6 views
0

Я пытаюсь создать простую программу, которая будет печатать високосные годы между двумя введенными годами. Я сделал цикл, который проверяет каждый год, чтобы увидеть, является ли он високосным годом, а затем печатает его, но я хотел бы иметь возможность показывать только 10 лет на каждой строке, а не только все на одной длинной линии.Java - печать новой строки после десяти значений в цикле for

Так как это:

1004, 1008, 1012, 1016, 1020, 1024, 1028, 1032, 1036, 1040, 
    1044, 1048, 1052, 1056, 1060, 1064, 1068, 1072, 1076, 1080, 
    1084, 1088, 1092, 1096, 1104, 1108, 1112, 1116, 1120, 1124, 
    1128, 1132, 1136, 1140, 1144, 1148, 1152, 1156, 1160, 1164, 
    1168, 1172, 1176, 1180, 1184, 1188, 1192, 1196, 1200. 

вместо этого:

1004, 1008, 1012, 1016, 1020, 1024, 1028, 1032, 1036, 1040, 1044, 1048, 1052... 

Я пробовал различные различные методы, чтобы это произошло, вложенные для петель и т.д., но в данный момент я не могу показаться, чтобы сделать это произошло. Извините, если это глупый вопрос с простым ответом, я не очень долго изучал Java.

Вот мой код до сих пор который печатает все годы на одной линии:

import java.util.Scanner; 

public class LeapYears { 

    public static void main(String[] args) 
    { 
     int firstY, finalY; 
     Scanner kb = new Scanner(System.in); 

     System.out.print("Enter start year: "); 
     firstY = kb.nextInt(); 

     System.out.print("Enter end year: "); 
     finalY = kb.nextInt(); 

     for(; firstY <= finalY; firstY++) { 
      if ((firstY % 4) == 0) { 
       if ((firstY % 100) == 0) { 
        if ((firstY % 400) == 0) { 
         System.out.print(firstY + ", "); 
         firstY++; 
        } 
       } else { 
        System.out.print(firstY + ", "); 
       } 
      } 
     } 
    } 
} 
+0

Отслеживайте, где вы находитесь в цикл: для (INT I = firstY; я <= Финлей, я ++) и напечатать строку, если я делится на 10 –

ответ

0

Это то, что я хотел бы сделать. Просто добавьте переменную счетчика int, увеличивайте ее каждый раз, когда вы печатаете год. Когда он достигнет кратного 10, просто напечатайте новую строку.

import java.util.Scanner; 

public class LeapYears 
{ 

public static void main(String[] args) 
{ 
    int firstY, finalY, counter; 
    counter = 0; 
    Scanner kb = new Scanner(System.in); 

    System.out.print("Enter start year: "); 
    firstY = kb.nextInt(); 

    System.out.print("Enter end year: "); 
    finalY = kb.nextInt(); 



    for(; firstY <= finalY; firstY++) 

    { 
     if ((firstY % 4) == 0) 

     { 
      if ((firstY % 100) == 0) 

      { 
       if ((firstY % 400) == 0) 

       { 
        System.out.print(firstY + ", "); 
        firstY++; 
        counter++; 
        if (counter % 10 == 0) System.out.println(""); 
       } 
      } 

      else 
      { 
       System.out.print(firstY + ", "); 
      } 

     } 
    } 

} 
} 
+0

Спасибо большое! Работает отлично. – JavaLava

+0

@JavaLava Если бы это было решение, пойдите и отметьте его как «Принятый ответ», чтобы облегчить поиск другими. – Spencer4134

0

использовать внешний счетчик (скажем int printed = 0), чтобы отслеживать, сколько номеров вы уже распечатали. Проверьте в своем внутреннем цикле printed % 10 == 0 и позвоните по телефону System.out.println().

0

Вы можете использовать счетчик для отслеживания цикла

int counter =0; 
for(; firstY <= finalY; firstY++) 

    { 
     if ((firstY % 4) == 0) 

     { 
      if ((firstY % 100) == 0) 

      { 
       if ((firstY % 400) == 0) 

       { 
        if(counter==10) { 
         System.out.println(""); 
        } 
        System.out.print(firstY + ", "); 
        firstY++; 
        counter++; 

       } 
      } 

      else 
      { 
       System.out.print(firstY + ", "); 
       counter++; 
      } 

     } 
    } 
1

Вы можете сделать что-то подобное.

int count = 0; 
for(; startYear <= endYear; startYear++) { 
System.out.print(startYear + ", "); 
count++; 
if(count == 10) { 
    count = 0; 
    System.out.println(); 
} 
}