2015-02-25 2 views
0

У меня есть небольшая проблема. Я понял, как решить эту программу, но я не могу получить вывод для вывода ВСЕ високосных лет в табличном формате. Вместо этого, на выходе выдается високосный год по одному, чего я не хочу с моей программой.Количество прыжков Годы в течение двух конкретных лет

В чем может быть проблема?

EDIT: Я пытаюсь получить все эти годы, чтобы вытолкнуть с помощью «JOptionPane» окно сообщения (JOptionPane.showMessageDialog (нуль ",«);), но я получаю только один выход за коробку и много ящиков ... по сравнению со всеми выходами в одной коробке.

Вот код:

String enterYear = JOptionPane.showInputDialog(null, "Enter the starting year: \nExample: 2015"); // User enters an input (Year) 
    String enterLastYear = JOptionPane.showInputDialog(null, "Enter the ending year: "); 

    int i = Integer.parseInt(enterYear); 


    if (Integer.parseInt(enterYear) < Integer.parseInt(enterLastYear)){ 
     for (i = Integer.parseInt(enterYear); i < Integer.parseInt(enterLastYear); i += 4){ 
      if(i % 400 == 0 || i % 4 == 0) { 
       JOptionPane.showMessageDialog(null, i + "\n"); 
      } 

     } 

    } else { 
     JOptionPane.showMessageDialog(null, "Error: Starting Year is greater than Ending Year!"); 
    } 
} 
} 
+0

что ваш вход и выход, что вы получаете? – Ambrish

+0

@ Ambrish, я ввожу 2000 и 2010 годы и получаю 2004 и 2008 годы. Хотя я хочу, чтобы годы были выпущены только в одной коробке, а не в нескольких ящиках. (Блоки JOptionPane). – Dongbae

ответ

1

Вам просто нужно создать сообщение, прежде чем передать его на JOptionPane.

Пример кода:

public class LeapYearTest { 
    public static void main(String[] args) { 
     LeapYearTest leapYearTest = new LeapYearTest(); 
     leapYearTest.showLeapYears(2000, 2020); 
     leapYearTest.showLeapYears(2000, 2000); 
    } 

    private void showLeapYears(int start, int end) { 
     StringBuffer msg = new StringBuffer(); 
     if (start < end) { 
      msg.append("<html><table><tr><td><b>Leap Years</b></td></tr>"); 
      for (int i = start; i < end; i++) { 
       if(i % 400 == 0 || i % 4 == 0) { 
        msg.append("<tr><td>" + i + "</td></tr>"); 
       } 
      } 
      msg.append("</table></html>"); 
     } else { 
      msg.append("Error: Starting Year is greater than Ending Year!"); 
     } 

     JOptionPane.showMessageDialog(null, msg.toString()); 
    } 
} 

Выходы: Leap years in table format Error message

+0

Знаете ли вы, как вы могли сделать это в формате с текстом? Значит, у него есть строки и столбцы? – Dongbae

+0

@Dongbae, Проверьте обновленный ответ. – Ambrish

+0

Большое спасибо! Высоко ценится! – Dongbae

0

Я думаю, вы должны заменить я + = 4 с ++ я. Кроме того, правильная формула для високосного года

year % 4 == 0 && year % 100 != 0 || year % 400 == 0 
+0

Я все равно получаю тот же результат. Вы знаете, как я смогу отобразить все високосные годы в одном всплывающем окне «JOptionPane»? – Dongbae

0

Я думаю, вы можете применить эту логику

public void calculateLeapYears(int fromYear,int tillYear){ 
    int count=0; 
     int firstLeapYear; 
     if(fromYear% 4==0) 
      firstLeapYear=fromYear; 
     else 
      firstLeapYear=fromYear+(4-fromYear%4); 
     for(int i=firstLeapYear;i<=tillYear;i+=4) 
      count++; 
     System.out.println(count); 

} 
Смежные вопросы