当前位置: 首页 > 面试题库 >

为什么我的程序只输出一个结果而不是五个结果?

楚嘉玉
2023-03-14
问题内容
/*
 *Find if a year is leap or not
 */

public class LeapYear{

    private static int leapYear;

    public void setLeapYear(int leapYear){

        this.leapYear = leapYear;

    }// end method


    public static void main (String[] args) {
        LeapYear leap = new LeapYear();
        leap.setLeapYear(2010);
        leap.setLeapYear(2008);
        leap.setLeapYear(1900);
        leap.setLeapYear(2000);
        leap.setLeapYear(1565);

        // Is it Divisible by 4?
        if (leapYear % 4 == 0) {

            // Is it Divisible by 4 but not 100?
            if (leapYear % 100 != 0) {
                System.out.println(leapYear + ": is a leap year.");
            }
            // Is it Divisible by 4 and 100 and 400?
            else if (leapYear % 400 == 0) {
                System.out.println(leapYear + ": is a leap year.");
            }
            // It is Divisible by 4 and 100 but not 400!
            else {
                System.out.println(leapYear + ": is not a leap year.");
            }
        }
        // It is not divisible by 4.
        else {
            System.out.println(leapYear + ": is not a leap year.");
        }
    }
}

我是Java的新手,所以我编写了这段代码,以便将这整个五年都称为布尔值,并为所有布尔值生成答案。但是,它仅调用最后一个。我该怎么做呢?


问题答案:

您每年需要使用单独的对象,或者至少在创建该年份的对象后立即调用the年检查方法。

您所拥有的是对函数的一系列调用,该函数将值分配给同一对象的属性。因此,只有最后一条语句才起作用,因为先前的值将被覆盖。

另外请注意,您的代码似乎没有正确组织。乳清您在Main中进行检查,似乎leapYear没有在任何地方定义。

也许,您可能想定义一个返回true / false的函数,具体取决于传递的参数的值或对象中存储的年份的值。

该代码可能看起来像这样:

leap.setLeapYear(2010);    // leap.leapYear = 2010;
System.out.println(leap.isLeapYear());

leap.setLeapYear(2008);    // leap.leapYear = 2008;
System.out.println(leap.isLeapYear());
leap.setLeapYear(1900);    // leap.leapYear = 1900;
System.out.println(leap.isLeapYear());
leap.setLeapYear(2000);
System.out.println(leap.isLeapYear());
leap.setLeapYear(1565);
System.out.println(leap.isLeapYear());

您必须通过将main中的检查移至该函数来定义isLeapYear()。



 类似资料:
  • 小白菜疑问,能不能详细地跟我说一下两种写法的区别? 题目:使用函数求素数和: 定义prime(p), 其中函数prime当用户传入参数p为素数时返回True,否则返回False 定义PrimeSum(m,n),函数PrimeSum返回区间[m, n]内所有素数的和。题目保证用户传入的参数1<=m<n 假设输入m=1,n=10 疑问:下面是两种不同的写法,第一个是我写的,第二个是正确答案TT,我不太

  • 我试图做一个函数,返回数组的长度,但函数总是返回8

  • 我正在与jOOQ通话: 其中应复制此PostreSQL语句: 然而,jOOQ给了我一个只有一个StoreRecord的列表,尽管这里有五个条目符合某些标准。。 我做错了什么?

  • ES6为什么会输出这个结果,程序是怎么执行的,有大佬可以解释一下吗?

  • 当我在本文中使用<code>dplyr::case_when<code>而不是<code>if<code>时,我注意到了下面的这种行为。如果第二个分支的输出是一个显式字符串,它将按预期工作,但如果指定了<code>x</code>本身,结果将发生变化。 为什么只有< code>case_when给出不同的结果? 由reprex软件包(v2.0.1)于2022年8月16日创建

  • 问题内容: 我有两个不同的表,在这些表上我应用了带有一些过滤器和汇总函数(如SUM,COUNT,SUBSTR)的选择查询。 我想在单个结果中获得这两个不同的输出。 查询1: 查询2: 我已经尝试过,而且都尝试过。但是那些没有用。我也尝试过,但是也没有用。请给我建议一些解决方案,在这种情况下会有所帮助。谢谢。 问题答案: 有两种将查询放在一起的方法:通过使用联接进行侧向查询,并通过联合在彼此之上进行