布尔条件始终评估为true

1 java boolean

我正在为一个简介Java类做一个家庭作业项目,我的任务是创建一个类和方法来测试输入年是否是闰年.我已经看到很多人在一个程序中执行此操作的示例,但我们需要构建该类,然后运行我的教授的Tester文件.我终于得到了所有编译而没有错误,但每次我运行该文件时,我都会被告知这一年是闰年.我尝试了很多不同的东西,我无法弄清楚为什么布尔条件总是评估为真(或者其他任何我做错了).

我的代码如下:

public class Year
{
   // declare variable
    private int y;
    private String year;

    // declare constructor
    public Year(String theYear, int year_input)
    {
        y=year_input;
        theYear=year;
    }    

    // ensure y has a value
    public Year(int y)
    {
        y=0;
    } 

    // test if y is a leap year
    public boolean isLeapYear()
    {
             if (y%4==0 && (y/100!=0 || y%400==0))
             { 
                 return true;
             } 
                return false;

    }
} 
Run Code Online (Sandbox Code Playgroud)

我教授的代码在这里:

import java.util.Scanner;

public class LeapYearTester{

public static void main(String[] args){

    Scanner input = new Scanner(System.in);
    System.out.println("Please enter a year");
    int year_input = input.nextInt();

    // now make a Year object

    Year theYear = new Year(year_input);

    // now check to see if it's a leap year

    if (theYear.isLeapYear())
        System.out.println("That's a leap year!");
    else
        System.out.println("That's not a leap year!");
    }
}
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 5

在单个参数构造函数中,您始终将年份初始化为0.

更改

public Year(int y)
{
    y = 0;
} 
Run Code Online (Sandbox Code Playgroud)

public Year(int y)
{
    this.y = y;
} 
Run Code Online (Sandbox Code Playgroud)