闰年的重复代码
Repeating code for leap year
我已经知道如何检查闰年了,像这样:
import java.util.*;
public class LeapYear {
public static void main(String[] args) {
int year;
{
Scanner scan = new Scanner(System.in);
System.out.println("Enter year: ");
year = scan.nextInt();
if ((year % 4 == 0) && year % 100 != 0) {
System.out.println(year + " is a leap year.");
} else if ((year % 4 == 0) && (year % 100 == 0)
&& (year % 400 == 0)) {
System.out.println(year + " is a leap year.");
} else {
System.out.println(year + " is not a leap year.");
}
}
}
}
但现在我想重复这段代码。我以前见过重复的代码片段,我几乎可以成功使用任何代码片段,但是这个给我带来了麻烦。
import java.util.Scanner;
public class LeapUpgrade
{
public static void main(String[] args)
{
String another = "y";
int year;
Scanner scan = new Scanner(System.in);
while (another.equalsIgnoreCase("y"))
{
System.out.println("Enter year: ");
year = scan.nextInt();
if ((year % 4 == 0) && year % 100 != 0)
{
System.out.println(year + " is a leap year.");
System.out.print("test another (y/n)? ");
another = scan.nextLine();
}
else if ((year % 4 == 0) && (year % 100 == 0)
&& (year % 400 == 0))
{
System.out.println(year + " is a leap year.");
System.out.print("test another (y/n)? ");
another = scan.nextLine();
}
else
{
System.out.println(year + " is not a leap year.");
System.out.print("test another (y/n)? ");
another = scan.nextLine();
}
}
}
}
我在这里做错了什么?
在此先感谢您的帮助,不要判断。
为避免重复,将代码行封装在一个方法中即可
public static boolean isLeapYear(int year){
return (year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0);
}
你可以这样称呼它
if(LeapYear.isLeapYear(year)){
System.out.println("Leap year");
}else{
System.out.println("Not a leap year");
}
编辑: 请参阅 Rohan 的回答。为了模块化和 cleanliness/readability 代码更好。
当您想多次执行某项操作时,通常只需要一个循环即可。作为提示,您的循环应该包含这部分代码:
year = scan.nextInt();
if ((year % 4 == 0) && year % 100 != 0) {
System.out.println(year + " is a leap year.");
} else if ((year % 4 == 0) && (year % 100 == 0) && (year % 400 == 0)) {
System.out.println(year + " is a leap year.");
} else {
System.out.println(year + " is not a leap year.");
}
我会把循环类型和条件留给你。
我已经知道如何检查闰年了,像这样:
import java.util.*;
public class LeapYear {
public static void main(String[] args) {
int year;
{
Scanner scan = new Scanner(System.in);
System.out.println("Enter year: ");
year = scan.nextInt();
if ((year % 4 == 0) && year % 100 != 0) {
System.out.println(year + " is a leap year.");
} else if ((year % 4 == 0) && (year % 100 == 0)
&& (year % 400 == 0)) {
System.out.println(year + " is a leap year.");
} else {
System.out.println(year + " is not a leap year.");
}
}
}
}
但现在我想重复这段代码。我以前见过重复的代码片段,我几乎可以成功使用任何代码片段,但是这个给我带来了麻烦。
import java.util.Scanner;
public class LeapUpgrade
{
public static void main(String[] args)
{
String another = "y";
int year;
Scanner scan = new Scanner(System.in);
while (another.equalsIgnoreCase("y"))
{
System.out.println("Enter year: ");
year = scan.nextInt();
if ((year % 4 == 0) && year % 100 != 0)
{
System.out.println(year + " is a leap year.");
System.out.print("test another (y/n)? ");
another = scan.nextLine();
}
else if ((year % 4 == 0) && (year % 100 == 0)
&& (year % 400 == 0))
{
System.out.println(year + " is a leap year.");
System.out.print("test another (y/n)? ");
another = scan.nextLine();
}
else
{
System.out.println(year + " is not a leap year.");
System.out.print("test another (y/n)? ");
another = scan.nextLine();
}
}
}
}
我在这里做错了什么? 在此先感谢您的帮助,不要判断。
为避免重复,将代码行封装在一个方法中即可
public static boolean isLeapYear(int year){
return (year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0);
}
你可以这样称呼它
if(LeapYear.isLeapYear(year)){
System.out.println("Leap year");
}else{
System.out.println("Not a leap year");
}
编辑: 请参阅 Rohan 的回答。为了模块化和 cleanliness/readability 代码更好。
当您想多次执行某项操作时,通常只需要一个循环即可。作为提示,您的循环应该包含这部分代码:
year = scan.nextInt();
if ((year % 4 == 0) && year % 100 != 0) {
System.out.println(year + " is a leap year.");
} else if ((year % 4 == 0) && (year % 100 == 0) && (year % 400 == 0)) {
System.out.println(year + " is a leap year.");
} else {
System.out.println(year + " is not a leap year.");
}
我会把循环类型和条件留给你。