在单个对话框中显示两年之间的闰年数

时间:2015-02-25 18:53:20

标签: java

我需要一些帮助。我希望我的输出显示闰年的表格格式。

但即使我的程序确实有效......它也不一定像图片中那样。有谁能告诉我如何工作?

这是我的意见: 2000 - 2020

这是我的输出(但在单独的JOptionPane弹出框中): 2000 2004 2008 2012 2016

这是我的代码:

    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);
    int x = Integer.parseInt(enterLastYear);
    String output = "";

    if (i < x){
        for (i = Integer.parseInt(enterYear); i < x; i ++ ){
            if(i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {

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

2 个答案:

答案 0 :(得分:1)

目前,您为每个结果显示一个弹出窗口,因为您在showMessageDialog循环的每次运行中调用for

更改代码,以便在循环中创建包含所有“答案”的结果字符串,然后显示结果对话框一次。

此外,您已经解析了int值并在循环之前将其分配给i,因此请勿执行两次并将其从循环标题中删除。

if (i < x){
    //we use this variable to count the number of leap years that we already found
    int noOfResults = 0;
    String results = "";
    for (; i < x; i ++ ){ //i loops over the years
        //i is a leap year when this expression is true:
        if(i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
            //add the leap year to the result string:
            results += i + " ";
            //increase the number of found results by 1:
            noOfResults++;
            //for every 5th result, we add a line break to the result string
            // this is done with the % sign, the modulo operator
            // which returns the remainder of a division
            // meaning that everytime we loop through this, it is
            // checked if the remainder of noOfResults divided by 5 is zero
            if(noOfResults % 5 == 0){
                results += "\n";
            }
        }
    }
    JOptionPane.showMessageDialog(null, results);
}

答案 1 :(得分:1)

而不是循环中的这一行

JOptionPane.showMessageDialog(null, i + "");

将变量i和空格(" ")连接到String输出的末尾。 然后在你的循环外JOptionPane.showMessageDialog进行,但在你的if内。 您可能需要添加代码以跟踪字符串中的值,并添加\n(如果该数字可被4整除或您选择的任何数字)。