import javax.swing.JOptionPane;
int year;
boolean is_leap_year(int year)
{
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
return true;
else
return false;
}
void setup ()
{
String answer = JOptionPane.showInputDialog("Enter a year or a negative number to test");
year = Integer.parseInt(answer);
while (year > 0) {
boolean b = is_leap_year(year);
if (b == true) {
println( year + " is a leap year");
}
else{
println( year + " is Not a leap year");
answer = JOptionPane.showInputDialog("Enter a year or a negative number to test");
year = Integer.parseInt(answer);
}
}
}
我写了函数is_leap_year来测试输入是否是闰年。但是,该程序不会在一个错误的基础上运行。
(第3行)"此方法必须返回boolean类型的结果。"
Haven我已经这样做了,因为我把boolean作为函数类型放在标题中?我还将return true作为if语句的块。
另外,我不确定是否可以通过设置正确调用该功能。我觉得好像我错过了什么。
任何澄清都将不胜感激。
编辑:(第7行和第8行)我完成了它并添加了else以返回false。 出于某种原因,处理在打印后崩溃" 2000是闰年"当我输入2000时,在多行中。是否有无限循环?我该如何解决?
答案 0 :(得分:0)
用头脑中的程序,或用一张纸和一支铅笔。一次拿一行:
String answer = JOptionPane.showInputDialog("Enter a year or a negative number to test");
year = Integer.parseInt(answer);
该行从用户获得一年。假设用户输入2000
。
while (year > 0) {
所以现在我们正在循环。 2000 > 0
,我们输入while
循环。
boolean b = is_leap_year(year);
这测试一年是否是闰年。 2000
是闰年,因此b
为true
。
if (b == true) {
println( year + " is a leap year");
}
由于b
为true
,因此会打印出来。
else {
println( year + " is Not a leap year");
answer = JOptionPane.showInputDialog("Enter a year or a negative number to test");
year = Integer.parseInt(answer);
}
我们的b
变量仍为true
,因此会跳过此代码。然后我们回到while
循环。
while (year > 0) {
我们的year
变量仍为2000
,因此我们再次重复上述内容,并再次重复上述内容。
问题是:如果是闰年,你再也不会要求再过一年。你只是在同一年继续循环,这将导致无限循环并可能导致Processing崩溃。
要解决此问题,您需要在两种情况下都要求新的一年。