两个特定年份内的闰年数

时间:2015-02-25 04:55:09

标签: java

我有一个小问题。我想出了如何解决这个程序,但我不能让输出以表格格式输出所有闰年。相反,输出一次一个地射出闰年,这是我不希望我的程序。

可能是什么问题?

编辑: 我正试图使用​​“JOptionPane”消息框(JOptionPane.showMessageDialog(null,“”);)来弹出所有年份,但我每个盒子只有一个输出和许多盒子......与一个方框中的所有输出相比。

以下是代码:

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!");
    }
}
}

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我认为你应该用i ++替换i + = 4。同样正确的闰年公式是

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

答案 2 :(得分: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);

}