在Processing中调用setup中的函数

时间:2016-10-25 01:26:08

标签: function processing call

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时,在多行中。是否有无限循环?我该如何解决?

1 个答案:

答案 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是闰年,因此btrue

 if (b == true) {
      println( year + " is a leap year");
 }

由于btrue,因此会打印出来。

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崩溃。

要解决此问题,您需要在两种情况下都要求新的一年。