创建闰年程序(包括世纪)
Creating Leap Year program (Century included)
我是第一年,所以我真的是个新手,我们的作业是 –
By definition a leap year is any year that is divisible by 4. However if a year is a century year it is only a leap year if it is divisible by 400. Write a Java program that will input a year and determine if the year is leap year of not.
另外,由于世纪年份未知,我也必须根据输入的年份来计算它。我在网上看了一个答案,我认为是正确的——获取年份的前 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++;
}
}
}
我不会帮你做作业的。我建议您先从逻辑上分解问题,然后再尝试编写代码。
先用英文写条件,再写代码去匹配,比如:
it is a leap year if: the year is divisible by 4 unless it is also divisible by 100 unless.... etc etc
一旦像这样写下来,它可能会使逻辑更容易理解,然后更容易编码。
您应该考虑以下提示:
year % 4 == 0
只表示如果不是世纪年就是闰年
- 变量
centuryyear
没有用,可以从您的程序中删除。
- 能被100整除的年份为世纪年
- 你知道 OR 运算符
||
吗?
然后按照 Sam Holder 的建议进行操作。
Can I use the if/else only?
是的,你可以。一个建议。您可以使用嵌套的 if~else
块。您没有理由只找到一个正确的 if
条件。
if (...) {
if (...) {
...
}
} else {
if (...) {
...
}
}
当然你可以使用if~else if
代替嵌套if~else
。
if (... && ...) {
...
} else if (... && ...) {
...
}
最后这也是等价的(单个但嵌套的 if 条件):
if ((... && ...) || (... && ...)) {
...
}
您不需要使用单独的 "century year" 变量。您只需要测试年份,看看它是否符合标准。标准:
能被 4 整除但不能被 100 整除除非也能被 400 整除
您已经知道如何使用 % 来测试这些条件,所以让我们分别看一下它们:
能被 4 整除的年份为:年份 % 4 == 0
不能被 100 整除是:年份 % 100 != 0
但能被 400 整除的是:year % 400 == 0
所以我们需要第一个表达式和第二个表达式或第三个表达式:
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
我是第一年,所以我真的是个新手,我们的作业是 –
By definition a leap year is any year that is divisible by 4. However if a year is a century year it is only a leap year if it is divisible by 400. Write a Java program that will input a year and determine if the year is leap year of not.
另外,由于世纪年份未知,我也必须根据输入的年份来计算它。我在网上看了一个答案,我认为是正确的——获取年份的前 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++;
}
}
}
我不会帮你做作业的。我建议您先从逻辑上分解问题,然后再尝试编写代码。
先用英文写条件,再写代码去匹配,比如:
it is a leap year if: the year is divisible by 4 unless it is also divisible by 100 unless.... etc etc
一旦像这样写下来,它可能会使逻辑更容易理解,然后更容易编码。
您应该考虑以下提示:
year % 4 == 0
只表示如果不是世纪年就是闰年- 变量
centuryyear
没有用,可以从您的程序中删除。 - 能被100整除的年份为世纪年
- 你知道 OR 运算符
||
吗?
然后按照 Sam Holder 的建议进行操作。
Can I use the if/else only?
是的,你可以。一个建议。您可以使用嵌套的 if~else
块。您没有理由只找到一个正确的 if
条件。
if (...) {
if (...) {
...
}
} else {
if (...) {
...
}
}
当然你可以使用if~else if
代替嵌套if~else
。
if (... && ...) {
...
} else if (... && ...) {
...
}
最后这也是等价的(单个但嵌套的 if 条件):
if ((... && ...) || (... && ...)) {
...
}
您不需要使用单独的 "century year" 变量。您只需要测试年份,看看它是否符合标准。标准:
能被 4 整除但不能被 100 整除除非也能被 400 整除
您已经知道如何使用 % 来测试这些条件,所以让我们分别看一下它们:
能被 4 整除的年份为:年份 % 4 == 0
不能被 100 整除是:年份 % 100 != 0
但能被 400 整除的是:year % 400 == 0
所以我们需要第一个表达式和第二个表达式或第三个表达式:
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)