Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我需要另一双眼睛来告诉我在哪里我又变傻了(关于计算)_Java_If Statement - Fatal编程技术网

Java 我需要另一双眼睛来告诉我在哪里我又变傻了(关于计算)

Java 我需要另一双眼睛来告诉我在哪里我又变傻了(关于计算),java,if-statement,Java,If Statement,我实际上是想通过知道日期来计算一周中的某一天,例如1950年2月20日,这是一个星期一。当然还有很多其他问题,我已经有了公式。 问题是,当我添加了一个if语句,假设我得到了3,我得到了2,如果我得到了0,我得到了-1。有人能帮我看看有什么问题吗 这些是月代码变量,这将是我需要的输出,这是输出不断得到错误的输出比预期的部分 /* Month Code */ private static int JAN_CODE = 1; private static int FEB_CODE = 4; priva

我实际上是想通过知道日期来计算一周中的某一天,例如1950年2月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;
闰年计算并返回true或false

private boolean isLeapYear(){
    if((year % 100 == 0) && (year % 400 != 0))
    {
        return false;
    }else if(year % 4 == 0)
    {
        return true;
    }else{
        return false;
    }
}
这是根据月份的整数返回
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;
}
查看返回内容的简单代码

public void getCode(){
    System.out.println("Code: "+getMonthCode());
}
我尝试使用
JAN\u code=JAN\u code-1仍然得到错误的输出。
比如说,如果输入了一月,我得到的一月代码如果不是闰年的话应该是1,但是如果是闰年的话应该是0,但是在我输入if(I==true)语句查看它是否是闰年并且输入了一月之后,我得到的月代码是-1,如果二月我得到2,那么我得到的一月是0,二月是不是?
如果我取出If语句,那么返回的是1月份的1和2月份的4


有人能帮我一把吗?

我会从修改函数处理数据的方式开始,传递参数而不是使用静态内容。这应该让您了解如何解决此问题:

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调用(“代码:”+getMonthCode(1954,1))//1954年1月


您仍然可以使用全局/静态变量:getMonthCode(年、月)

您将getMonthCode称为何处?将所有这些代码组成一个数组要容易得多…哦,省略了它…一秒钟,另外,它只是一个
系统.out.println
来测试它。你为什么不使用
日历
?你正在修改
一月代码
二月代码
,这是
静态的
,这不是一个好主意。谢谢,这确实是另一种解决方法,但仍然好奇我做了什么,这是有错误的:(