我需要另一双眼睛来告诉我我在哪里又笨了(关于计算)
I need another pair of eye to tell me where I am being dumb again (about calculations)
我实际上是在尝试做一些事情,比如通过知道日期 e.g.February 1950 年 20 日是星期一来计算星期几。当然还有很多其他问题,我已经有了公式。
事情不知何故,当我添加一个 if 语句时,假设我得到 3,我得到 2,如果我应该得到 0,我得到 -1。有人可以帮我看看有什么问题吗?
这些是我需要的输出的月份代码变量,这是输出不断得到比预期错误的输出的部分。
/* Month Code */
private static int JAN_CODE = 1;
private static int FEB_CODE = 4;
private static int MAR_CODE = 4;
private static int APR_CODE = 0;
private static int MAY_CODE = 2;
private static int JUN_CODE = 5;
private static int JUL_CODE = 0;
private static int AUG_CODE = 3;
private static int SEP_CODE = 6;
private static int OCT_CODE = 1;
private static int NOV_CODE = 4;
private static int DEC_CODE = 6;
闰年计算和return判断真假
private boolean isLeapYear(){
if((year % 100 == 0) && (year % 400 != 0))
{
return false;
}else if(year % 4 == 0)
{
return true;
}else{
return false;
}
}
这是 return monthCode
的部分,具体取决于月份的整数
public int getMonthCode(){
// variable to store the code
int monthCode;
// January and February dates in leap years: subtract 1
boolean i = isLeapYear();
if (i == true){
JAN_CODE -= 1;
FEB_CODE -= 1;
}
// Check which month uses which month code
switch (month){
case JANUARY_INT: monthCode = JAN_CODE;
break;
case FEBURARY_INT: monthCode = FEB_CODE;
break;
case MARCH_INT: monthCode = MAR_CODE;
break;
case APRIL_INT: monthCode = APR_CODE;
break;
case MAY_INT: monthCode = MAY_CODE;
break;
case JUNE_INT: monthCode = JUN_CODE;
break;
case JULY_INT: monthCode = JUL_CODE;
break;
case AUGUST_INT: monthCode = AUG_CODE;
break;
case SEPTEMBER_INT: monthCode = SEP_CODE;
break;
case OCTOBER_INT: monthCode = OCT_CODE;
break;
case NOVEMBER_INT: monthCode = NOV_CODE;
break;
case DECEMBER_INT: monthCode = DEC_CODE;
break;
default: monthCode = 0;
}
return monthCode;
}
查看内容的简单代码 returned
public void getCode(){
System.out.println("Code: "+getMonthCode());
}
我尝试使用 JAN_CODE = JAN_CODE - 1;
仍然得到错误的输出。
所以假设如果输入一月,如果不是闰年,我得到的 JAN_CODE 将是 1,但如果是闰年,它应该是 0,但在我输入 if(i == true)
语句后查看如果是闰年并且输入了 1 月,我得到的 monthCode 是 -1,如果是 2 月,我得到 2,但我应该在 1 月得到 0,在 2 月得到 3,不是吗?
如果我取出 if 语句,那么 returned 是 1 月的 1 和 4 月的 2 月
有人可以帮帮我吗?
我将从修改您的函数处理数据、传递参数而不是使用静态内容的方式开始。这应该让您了解如何解决它:
private boolean isLeapYear(inYear){
if((inYear % 100 == 0) && (inYear % 400 != 0))
{
return false;
}else if(inYear % 4 == 0)
{
return true;
}else{
return false;
}
}
private int getNewMonthCode(inYear, inMonthCode) {
if (isLeapYear(inYear)) {
return inMonthCode-1;
}
return inMonthCode;
}
public int getMonthCode(inYear, inMonth) {
// variable to store the code
int monthCode;
// Check which month uses which month code
switch (inMonth){
case JANUARY_INT: monthCode = getNewMonthCode(inYear, JAN_CODE);
break;
case FEBURARY_INT: monthCode = getNewMonthCode(inYear, FEB_CODE);
break;
case MARCH_INT: monthCode = MAR_CODE;
break;
case APRIL_INT: monthCode = APR_CODE;
break;
case MAY_INT: monthCode = MAY_CODE;
break;
case JUNE_INT: monthCode = JUN_CODE;
break;
case JULY_INT: monthCode = JUL_CODE;
break;
case AUGUST_INT: monthCode = AUG_CODE;
break;
case SEPTEMBER_INT: monthCode = SEP_CODE;
break;
case OCTOBER_INT: monthCode = OCT_CODE;
break;
case NOVEMBER_INT: monthCode = NOV_CODE;
break;
case DECEMBER_INT: monthCode = DEC_CODE;
break;
default: monthCode = 0;
}
return monthCode;
}
由 System.out.println("Code: " + getMonthCode(1954,1)) 调用; //1954 年 1 月
您仍然可以使用您的 global/static 变量:getMonthCode(year,month)
我实际上是在尝试做一些事情,比如通过知道日期 e.g.February 1950 年 20 日是星期一来计算星期几。当然还有很多其他问题,我已经有了公式。 事情不知何故,当我添加一个 if 语句时,假设我得到 3,我得到 2,如果我应该得到 0,我得到 -1。有人可以帮我看看有什么问题吗?
这些是我需要的输出的月份代码变量,这是输出不断得到比预期错误的输出的部分。
/* Month Code */
private static int JAN_CODE = 1;
private static int FEB_CODE = 4;
private static int MAR_CODE = 4;
private static int APR_CODE = 0;
private static int MAY_CODE = 2;
private static int JUN_CODE = 5;
private static int JUL_CODE = 0;
private static int AUG_CODE = 3;
private static int SEP_CODE = 6;
private static int OCT_CODE = 1;
private static int NOV_CODE = 4;
private static int DEC_CODE = 6;
闰年计算和return判断真假
private boolean isLeapYear(){
if((year % 100 == 0) && (year % 400 != 0))
{
return false;
}else if(year % 4 == 0)
{
return true;
}else{
return false;
}
}
这是 return monthCode
的部分,具体取决于月份的整数
public int getMonthCode(){
// variable to store the code
int monthCode;
// January and February dates in leap years: subtract 1
boolean i = isLeapYear();
if (i == true){
JAN_CODE -= 1;
FEB_CODE -= 1;
}
// Check which month uses which month code
switch (month){
case JANUARY_INT: monthCode = JAN_CODE;
break;
case FEBURARY_INT: monthCode = FEB_CODE;
break;
case MARCH_INT: monthCode = MAR_CODE;
break;
case APRIL_INT: monthCode = APR_CODE;
break;
case MAY_INT: monthCode = MAY_CODE;
break;
case JUNE_INT: monthCode = JUN_CODE;
break;
case JULY_INT: monthCode = JUL_CODE;
break;
case AUGUST_INT: monthCode = AUG_CODE;
break;
case SEPTEMBER_INT: monthCode = SEP_CODE;
break;
case OCTOBER_INT: monthCode = OCT_CODE;
break;
case NOVEMBER_INT: monthCode = NOV_CODE;
break;
case DECEMBER_INT: monthCode = DEC_CODE;
break;
default: monthCode = 0;
}
return monthCode;
}
查看内容的简单代码 returned
public void getCode(){
System.out.println("Code: "+getMonthCode());
}
我尝试使用 JAN_CODE = JAN_CODE - 1;
仍然得到错误的输出。
所以假设如果输入一月,如果不是闰年,我得到的 JAN_CODE 将是 1,但如果是闰年,它应该是 0,但在我输入 if(i == true)
语句后查看如果是闰年并且输入了 1 月,我得到的 monthCode 是 -1,如果是 2 月,我得到 2,但我应该在 1 月得到 0,在 2 月得到 3,不是吗?
如果我取出 if 语句,那么 returned 是 1 月的 1 和 4 月的 2 月
有人可以帮帮我吗?
我将从修改您的函数处理数据、传递参数而不是使用静态内容的方式开始。这应该让您了解如何解决它:
private boolean isLeapYear(inYear){
if((inYear % 100 == 0) && (inYear % 400 != 0))
{
return false;
}else if(inYear % 4 == 0)
{
return true;
}else{
return false;
}
}
private int getNewMonthCode(inYear, inMonthCode) {
if (isLeapYear(inYear)) {
return inMonthCode-1;
}
return inMonthCode;
}
public int getMonthCode(inYear, inMonth) {
// variable to store the code
int monthCode;
// Check which month uses which month code
switch (inMonth){
case JANUARY_INT: monthCode = getNewMonthCode(inYear, JAN_CODE);
break;
case FEBURARY_INT: monthCode = getNewMonthCode(inYear, FEB_CODE);
break;
case MARCH_INT: monthCode = MAR_CODE;
break;
case APRIL_INT: monthCode = APR_CODE;
break;
case MAY_INT: monthCode = MAY_CODE;
break;
case JUNE_INT: monthCode = JUN_CODE;
break;
case JULY_INT: monthCode = JUL_CODE;
break;
case AUGUST_INT: monthCode = AUG_CODE;
break;
case SEPTEMBER_INT: monthCode = SEP_CODE;
break;
case OCTOBER_INT: monthCode = OCT_CODE;
break;
case NOVEMBER_INT: monthCode = NOV_CODE;
break;
case DECEMBER_INT: monthCode = DEC_CODE;
break;
default: monthCode = 0;
}
return monthCode;
}
由 System.out.println("Code: " + getMonthCode(1954,1)) 调用; //1954 年 1 月
您仍然可以使用您的 global/static 变量:getMonthCode(year,month)