gpt4 book ai didi

java - 我的对象 boolean 值在程序不执行任何操作的情况下发生了变化

转载 作者:行者123 更新时间:2023-12-01 23:30:04 24 4
gpt4 key购买 nike

我调试了好几个小时,终于找到了问题所在。现在我必须修复它:)

我认为发生了一些奇怪的事情。

我正在创建一个日期应用程序,我在其中计算今天是哪一天(带有闰年更正等)。

我有一个方法,我在其中获取 Year 对象。

private int totalDays(Year yearnumber) {
System.out.println("Boolean check 1: " + yearnumber.getLeapYear());

//calculate days for whole year//
int daysWholeYear = 0;
for (int i = year.getYearZero(); i < yearnumber.getYear(); i++) {
// here i will add all the days (366) from the leapyears //
if (yearnumber.isLeapYear(i) == true) {
totalDays += year.getLengthyear() + 1;
System.out.println("Boolean check 2: " + yearnumber.getLeapYear());
} else {
totalDays += year.getLengthyear();
}
}

System.out.println("Boolean check 3: " + yearnumber.getLeapYear());

我的前两次 boolean 检查没问题。

代码(没有在 for 循环中循环的 boolean 检查)

Boolean check 1: true
Boolean check 2: true
Boolean check 3: false

我需要在我的方法的下一行中使用 boolean 值,在其中计算月份(非整年)的天数。但是,我的程序现在认为该年份不是闰年,因此会进行错误的计算。

因为我的程序中的这个 boolean 值发生了变化,所以我的其余计算都被关闭了。有人可以解释一下为什么会发生这种情况吗? :)

编辑:我年级的代码:

public class Year {
private static int yearzero = 1753;
private static int lengthYear = 365;
private int year;
private boolean leapYear;
private int startYear; //are used for an interval calculations
private int eindYear; //


public Year(int year) {
this.year = year;
this.leapYear = isLeapYear(year);
}

boolean isLeapYear(int year) {
return leapYear = (year % 400 == 0) ||
((year % 100) != 0 && (year % 4 == 0));
}

public int getYear(){
return year;
}

public int getYearzero () {
return yearZero;
}

public int getLengthYear() {
return lengthYear;
}

public boolean getLeapYear() {
return leapYear;
}

}

最佳答案

您的 isLeapYear 函数设置对象的 leapYear 变量。这是因为 yearnumber.isLeapYear(i) == true 将失败,并且 yearnumber.leapYear 将设置为 false

改变

 boolean isLeapYear(int year) {
return leapYear = (year % 400 == 0) ||
((year % 100) != 0 && (year % 4 == 0));
}

至:

 boolean isLeapYear(int year) {
return ((year % 400 == 0) ||
((year % 100) != 0 && (year % 4 == 0)));
}

关于java - 我的对象 boolean 值在程序不执行任何操作的情况下发生了变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19464154/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com