我需要一些帮助。我希望我的输出显示闰年的表格格式。
但即使我的程序确实有效......它也不一定像图片中那样。有谁能告诉我如何工作?
这是我的意见: 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!");
}
}
}
答案 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整除或您选择的任何数字)。