布尔条件始终评估为true

时间:2018-09-23 06:13:49

标签: java boolean

我正在为Java入门课程从事一项家庭作业项目,其中我的任务是创建一个类和方法来测试输入年份是否为a年。我已经看到很多人在一个程序中执行此操作的示例,但是我们需要构建班级,然后运行教授的Tester文件。我终于可以正确编译所有内容,但是每次运行文件时,都会被告知这一年是a年。我已经尝试了很多不同的方法,但是我不知道为什么布尔条件总是评估为真(或者我做错了什么)。

我的代码如下:

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;

    }
} 

和我的教授的代码在这里:

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!");
    }
}

5 个答案:

答案 0 :(得分:5)

在单参数构造函数中,您总是将年份初始化为0。

更改

public Year(int y)
{
    y = 0;
} 

public Year(int y)
{
    this.y = y;
} 

答案 1 :(得分:1)

问题出在您的构造函数中。

您总是将年份初始化为0,而不是输入的初始值。

还学习调试:)

答案 2 :(得分:0)

在第二个构造函数中,您始终将0分配给输入参数。这是没有意义的。相反,您必须将参数分配给您的成员变量。

答案 3 :(得分:0)

让您的构造函数

public Year (int y)
{
    this.y = y;
}

而不是总是将其初始化为0。

答案 4 :(得分:0)

year(int)构造函数出了点问题 正确的定义应类似于

public Year(int y){ this.y = y ;}

您之前所做的是将成员变量y初始化为0每次在构造函数中传递整数值时。

相关问题