我有以下问题。我(完全菜鸟)想在不使用日历库的情况下获得一年中的一天来完成我的大学任务。
所以我在这里写我的代码,就像我认为它应该是这样的,但不知怎么的,我的结果得到了不同的结果,就像他们应该做的那样,我真的不知道为什么。我的代码很简单,我想也许你们中的一个人可以看到我的问题。现在已经过去了1-2个小时,时间对我来说已经不多了。
在我的程序的主要方法中,你可以清楚地看到我记录的内容,我希望有人能看到问题所在
ublic class Date{
int day;
int year;
int month;
public Date(int year, int month, int day){
this.year = year;
this.month = month;
this.day = day;
if((year >= 1000) & (year <= 9999) && (month <= 12) && (month >= 1) && (day <= 31) && (day >= 1)){
}else{System.out.println("ERROR: Illegal date");}
}
public int getDay(){
return day;
}
public int getMonth(){
return month;
}
public int getYear(){
return year;
}
public static int getDaysInMonth(int year, int month){
int daysinMonth;
boolean schaltjahr =(year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
if(month == 4 || month == 6 || month == 9 || month == 11){
daysinMonth = 30;}
else if (month == 2 && schaltjahr){
daysinMonth=29;}
else if (month==2){
daysinMonth=28;}
else{
daysinMonth = 31;
}
return daysinMonth;
}
public static boolean validate(int year, int month, int day){
if((year >= 1000) & (year <= 9999) && (month <= 12) && (month >= 1) && (day <= 31) && (day <= 1)){
return true;
}else{
return false;
}
}
public int dayOfYear(){
int x = 0;
for (int y = 1; y < month; y++) {
x += getDaysInMonth(month, year);
}
x += day;
return x;
}
public int sameYearDiff(Date other){
if(year==other.year){
if(other.day<=day){
return (other.day-day);
}
else{
return Integer.parseInt("-" + (day-other.day));
}
}else{ return 0;}}
public String toString(){
return month + " " + day + ", " + year;
}
public static void main(String[]args){
Date d = new Date (2019,3,20);
System.out.print(d.dayOfYear()); //Expected output 140
// Testing every 20th Day of each month of the year 2019
// Januar is right with 20
// Februar is right with 51
// March expected output 79 we got 82 | +3
// April expected output 110 we got 110 | + 3
// May expected output 140 we got 144 | +4
// Juni expected output 171 we got 175 | +4
// Juli expected output 201 we got 206 | +5
// August expected output 232 we got 237 | + 5
// September expected output 263 we got 268 | +5
// October expected output 293 we got 299 | +6
// November expected output is 324 we got 330 | +6
// December expected output is 354 we got 361
}
}
System.out.print(d.dayOfYear()); //Expected output 140
140? 检查你的数学。第三个月的第20天是第79天。
1月31日,12月28日,3月20日。31 28 20 = 79.
你得到的。
x=getDaysInMonth(月,年)
您已经切换了
月份
和年份
。因此,您的月份校验码处理的是第2019个月,这自然会导致其他{dayin详月=31;}
块触发:您的所有月份现在都是31天。这解释了3(据报道,febroari有31天,而不是正确的28天)。
StackOverflow不是一个调试工具。幸运的是,调试通常相当容易!
要点很简单。你浏览每一行代码,在你的脑海中找出你期望发生的事情(这个变量应该得到那个值,这个应该被打印出来,诸如此类)。然后运行代码,比较实际发生的事情和您认为应该发生的事情。2号偏离的那一刻,瞧!你发现了一只虫子。继续看;通常会有更多。
可以使用调试器来执行此操作。或者只是添加一堆println语句。你很快就会明白的。
下次再做吧。
我试图根据用户使用calandar类输入的日期来确定一天是否是周末。但是当我打印出当天的值时,我得到了不正确的输出。 这是我的代码: 但是输出
问题内容: 我正在建立一个带有react和webpack的网站。当我使用webpack构建应用程序并尝试包含图像时,图像与其他资产一起写入了build文件夹,但是webpack输出的图像链接不正确。我可以进入构建文件夹并查看图像,因此正确复制了该图像,这是链接错误。 我的react组件看起来像这样: 我的Webpack配置如下所示: 从昨天开始,我就一直把头撞在墙上,因此,我们将不胜感激。让我知道
我正在尝试制作一个程序,让很多人进入ArrayList,然后从中随机选择一个名字。代码运行正常,但请求名称输入的字符串在第一次运行时会显示两次。知道为什么会这样吗? 我希望它显示的内容:输入名称:。。。。。。 显示内容:输入名称:输入名称:。。。。。。
问题内容: 您认为获得线程工作结果的最佳方法是什么?想象一个执行一些计算的线程,您如何警告主程序计算完成? 您可以每隔X毫秒轮询某个称为“作业完成”的公共变量或其他方式,但是随后您将在结果可用时才收到结果……主代码将浪费时间等待它们。另一方面,如果使用较低的X,则轮询将浪费CPU太多次。 因此,您如何做才能知道线程或某些线程已经完成了工作? 抱歉,如果它看起来与此其他问题相似,我想这可能是 ebe
我还在想方设法搞定PDO。 我有一个用PDO执行的insert语句。插入工作很好,但如果有一个错误,我希望它显示给用户。 我有下面的try catch块。 如果查询失败,或者假设有一个重复的IDNumber,我希望将此显示给用户。 如果我只是尝试回显变量$exception,它是不起作用的。 我想把mysql错误返回给用户。 我一如既往地感谢任何建议。 谢谢,瑞恩 更新 根据建议的答案编写新代码:
问题:基于PersonDto中存在的规则值,我正在应用这些规则。在Rule1类中,我有一个修改id字段的逻辑。我正在设置新的id,我得到作为参数。 最后,我将结果存储到ArrayList中。 但是在ArrayList中,所有PersonDto的值都是我在应用规则时传递的最后一个id值。 例如: 正如您在上面的代码片段中所看到的,有两个ID10001和10002,但是当存储并打印结果时,所有元素中的