1

我是第一年,所以我真的是个新手,我们有家庭作业——

根据定义,闰年是任何能被 4 整除的年份。但是,如果一年是世纪年,则只有能被 400 整除的才是闰年。编写一个 Java 程序,输入年份并确定年份是否为闰年不。

此外,由于不知道世纪年份,我还必须根据输入的年份计算它。我在网上阅读了一个我认为是正确的答案——获取年份的前 2 位数字,然后加 1。

我可以只使用 if/else 吗?

我不知道该怎么做。提交是在今天之后的一天。请帮忙!

我的代码看起来像这样,我知道它缺少世纪年。

import java.util.Scanner;
import java.io.*;

class leapyear
{
        public static void main(String[] a)
    {
        Scanner in = new Scanner (System.in);
        int year, centuryyear;
        System.out.print("Please enter a year: ");
        year = in.nextInt();

        if ((year % 4 == 0) && centuryyear % 400 == 0)
            {
            System.out.println(year + " Is a Leap Year");
            year++;
            }   
        else
            {
            System.out.println(year + " Is not a leap year");
            year++;
            }
    }
}
4

4 回答 4

0

我不会为你做作业。我建议您先在逻辑上分解问题,然后再尝试对其进行编码。

先用英文写下条件,然后尝试编写匹配的代码,例如:

如果满足以下条件,则为闰年:该年份可被 4 整除,除非它也可被 100 整除,除非.... 等等

一旦像这样写下来,它可能会使逻辑更容易理解,然后更容易编码。

于 2015-09-07T18:47:34.473 回答
0

您应该考虑以下提示:

  1. year % 4 == 0仅表示如果不是世纪年,则该年是闰年。
  2. 该变量centuryyear是无用的,可以从您的程序中删除。
  3. 如果一年能被 100 整除,那么一年就是世纪年。
  4. 你知道 OR 运算符||吗?

然后按照 Sam Holder 的建议进行操作。

于 2015-09-07T18:51:04.400 回答
0

我可以只使用 if/else 吗?

是的你可以。一个建议。您可以使用嵌套if~else块。没有理由你必须找到一个单一且正确的if条件。

if (...) {
    if (...) {
        ...
    }
} else {
    if (...) {
        ...
    }
}

当然你可以用if~else if嵌套代替if~else

if (... && ...) {
    ...
} else if (... && ...) {
    ...
}

最后这也是等价的(单个但嵌套的 if 条件):

if ((... && ...) || (... && ...)) {
    ...
}
于 2015-09-07T19:12:16.820 回答
0

您不需要使用单独的“世纪年”变量。您只需要测试年份,看看它是否符合标准。标准:

能被 4 整除且不能被 100 整除,除非也能被 400 整除

您已经知道如何使用 % 来测试这些条件,所以让我们分别看看它们:

可被 4 整除的年份为:year % 4 == 0

不能被 100 整除的是:year % 100 != 0

但能被 400 整除的是:year % 400 == 0

所以我们需要第一个表达式和第二个表达式或第三个表达式:

if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
于 2015-09-07T21:01:09.367 回答