Java 布尔条件总是求值为真
我正在为一个intro Java类做一个家庭作业项目,我的任务是创建一个类和方法来测试输入年份是否是闰年。我在一个程序中看到了很多这样做的例子,但是我们需要构建类,然后运行我教授的测试文件。我终于把所有要编译的东西都编译好了,但每次我运行这个文件,我都会被告知今年是闰年。我尝试了很多不同的方法,但我不明白为什么at的布尔条件总是求值为true(或者我做错了什么) 我的代码如下:Java 布尔条件总是求值为真,java,boolean,Java,Boolean,我正在为一个intro Java类做一个家庭作业项目,我的任务是创建一个类和方法来测试输入年份是否是闰年。我在一个程序中看到了很多这样做的例子,但是我们需要构建类,然后运行我教授的测试文件。我终于把所有要编译的东西都编译好了,但每次我运行这个文件,我都会被告知今年是闰年。我尝试了很多不同的方法,但我不明白为什么at的布尔条件总是求值为true(或者我做错了什么) 我的代码如下: public class Year { // declare variable private int
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 改变
public Year(int y)
{
y = 0;
}
到
在单参数构造函数中,总是将年份初始化为0 改变
public Year(int y)
{
y = 0;
}
到
问题出在构造函数中 您总是将年份初始化为0,而不是从输入中获得的值
还要学会调试:)问题在构造函数中 您总是将年份初始化为0,而不是从输入中获得的值
还要学习调试:)在第二个构造函数中,您总是将0指定给输入参数。这毫无意义。相反,您必须将参数分配给您的成员变量。在第二个构造函数中,您总是将0分配给您的输入参数。这毫无意义。相反,您必须将参数分配给您的成员变量。创建您的构造函数
public Year (int y)
{
this.y = y;
}
不要总是将其初始化为0。让您的构造函数
public Year (int y)
{
this.y = y;
}
而不是总是将其初始化为0。您的年份(int)构造函数有问题 正确的定义应该是
public Year(int y){ this.y = y ;}
前面所做的是每次在构造函数中传递整数值时将成员变量y初始化为0 您的年份(int)构造函数有问题 正确的定义应该是
public Year(int y){ this.y = y ;}
前面所做的是每次在构造函数中传递整数值时将成员变量y初始化为0 //确保y有一个值该构造函数将做什么?同时将y/100更改为y%100在第一个构造函数中没有人注意到这一行
theYear=year
)//确保y有一个值,这个构造函数将做什么?同时将y/100更改为y%100在第一个构造函数theYear=year中没有人注意到这一行代码>)是的,调试确实很好:)在这种情况下,当你看不出它为什么不工作时,你想做的就是什么都不做。您也可以使用println:)以后可以随时删除它们。测试你的假设并添加你自己的if语句来证明它们。是的,调试绝对是好的:)在这样的情况下,当你看不出它为什么不起作用时,你想做的就是什么都不假设。您也可以使用println:)以后可以随时删除它们。测试你的假设,并添加你自己的if语句来证明它们。