我有一个小问题。我想出了如何解决这个程序,但我不能让输出以表格格式输出所有闰年。相反,输出一次一个地射出闰年,这是我不希望我的程序。
可能是什么问题?
编辑: 我正试图使用“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!");
}
}
}
答案 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());
}
}
输出:
答案 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);
}