我正在为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!");
}
}
答案 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每次在构造函数中传递整数值时。