Java If语句的编译器错误

Java If语句的编译器错误,java,Java,我正在尝试实现将DD/MM/YY输入转换为DD/MM/YYYY输入的程序的一部分。我使用了一个if语句要求程序检查输入的数字是否为13和0); { if(byear=(byear13&&byear0)) 同样地,也适用于以下情况: if后面的分号将视为块的结尾。因此,您定义的else不被视为前面if语句的一部分请删除if语句后的分号 if(byear=(byear>0)) 同样地,也适用于以下情况: if后面的分号将视为块的结尾。因此,您定义的else不被视为其前面的if语句的一部分一旦修复编译

我正在尝试实现将DD/MM/YY输入转换为DD/MM/YYYY输入的程序的一部分。我使用了一个if语句要求程序检查输入的数字是否为13和0); { if(byear=(byear<13)) { byear=(byear+2000); } 其他(byear=(byear>13&&byear<100)); { byear=(byear+1900); } }//结束if语句 b月-=1//设置月份以更正数组 字符串day=daysList[bday]; 字符串月份=月列表[b个月]; int yearCount=(byear-1901); int daysInYear=365; int dayCount=(daysInYear*yearCount); System.out.println(“你出生在“+天+”+b天+“+月+”+byear); System.out.println(yearCount+“”+daysInYear+“”+dayCount);//仅测试输出 /*待办事项 * *任务2- *实施daysPerMonth-二月设置为28天 *使用计数确定正确的生日日期 * *任务3- *用户输入需要允许将基于字符的月份和2位数的年份转换为4位数的年份 *实施闰年*/ } }
删除if语句后的分号

if(byear=(byear>0))
同样地,也适用于以下情况:


if后面的分号将视为块的结尾。因此,您定义的else不被视为前面if语句的一部分

请删除if语句后的分号

if(byear=(byear>0))
同样地,也适用于以下情况:


if后面的分号将视为块的结尾。因此,您定义的else不被视为其前面的if语句的一部分

一旦修复编译器错误,就会出现此块的逻辑错误

    if (byear=(byear >0));{
        if (byear=(byear <13)); 
        {
            byear=(byear + 2000);
        }
        else  (byear =(byear >13 && byear <100)); 
        {
            byear=(byear + 1900);   
        } 
    }  // end if statement

修复编译器错误后,此块将出现逻辑错误

    if (byear=(byear >0));{
        if (byear=(byear <13)); 
        {
            byear=(byear + 2000);
        }
        else  (byear =(byear >13 && byear <100)); 
        {
            byear=(byear + 1900);   
        } 
    }  // end if statement

这部分是你的问题

if (byear = (byear > 0));
{
    if (byear = (byear < 13))
    {
        byear = (byear + 2000);
    }
    else(byear = (byear > 13 && byear < 100));
    {
        byear = (byear + 1900);
    }
} // end if statement
这将导致在不执行任何语句的情况下结束if块

下一个错误是如何尝试比较值。在这里

byear = (byear > 0);
如果byear大于0,则此语句为byear变量赋值
true
,否则将其设为
false
,这会导致编译器错误,因为byear是整数而不是布尔值。因此,将您的第一个if语句更改为

if (byear > 0)
看,没有必要把它分配给它自己。同样,删除比较中的所有赋值会使错误部分

if (byear > 0);
{
    if (byear < 13)
    {
        byear = (byear + 2000);
    }
    else(byear > 13 && byear < 100);
    {
        byear = (byear + 1900);
    }
} // end if statement
if(byear>0);
{
if(byear<13)
{
byear=(byear+2000);
}
其他(byear>13和&byear<100);
{
byear=(byear+1900);
}
}//结束if语句

现在,它应该可以编译了。

这部分是你的问题

if (byear = (byear > 0));
{
    if (byear = (byear < 13))
    {
        byear = (byear + 2000);
    }
    else(byear = (byear > 13 && byear < 100));
    {
        byear = (byear + 1900);
    }
} // end if statement
这将导致在不执行任何语句的情况下结束if块

下一个错误是如何尝试比较值。在这里

byear = (byear > 0);
如果byear大于0,则此语句为byear变量赋值
true
,否则将其设为
false
,这会导致编译器错误,因为byear是整数而不是布尔值。因此,将您的第一个if语句更改为

if (byear > 0)
看,没有必要把它分配给它自己。同样,删除比较中的所有赋值会使错误部分

if (byear > 0);
{
    if (byear < 13)
    {
        byear = (byear + 2000);
    }
    else(byear > 13 && byear < 100);
    {
        byear = (byear + 1900);
    }
} // end if statement
if(byear>0);
{
if(byear<13)
{
byear=(byear+2000);
}
其他(byear>13和&byear<100);
{
byear=(byear+1900);
}
}//结束if语句

现在,它应该可以编译了。

byear=(byear>0)
你确定你知道这里发生了什么吗?基本上我想让它说,只要输入年份超过0,就这样做。想想看,如果有人输入00(2000年),这将是一个问题。也许如果我使用=>0?这是一个很好的捕获。。Y2K问题又一次重演了:P。但回到问题的关键。由于您正在检查,因此不应同时分配。。基本上通过if运行。在第一行之前是,比如说,12。下一步它是
true
,然后
byear<13
就没有意义了。
byear=(byear>0)
你确定你知道这里发生了什么吗?基本上我希望它说,只要输入年份超过0,就这样做。想想看,如果有人输入00(2000年),这将是一个问题。也许如果我使用=>0?这是一个很好的捕获。。Y2K问题又一次重演了:P。但回到问题的关键。由于您正在检查,因此不应同时分配。。基本上通过if运行。在第一行之前是,比如说,12。下一步是
true
,然后
byear<13
就没有意义了..我只是偷偷溜进去,在我读这篇文章之前发现了这一点!从if(byear=(byear>0))中删除分号时效果很好,但是当我在else语句后删除分号时,程序返回了一个编译器错误,表示仍然需要分号。我只是偷偷溜进去,在读这篇文章之前发现了这一点!当从if(byear=(byear>0))中删除它时,它可以正常工作,但是当我在else语句之后删除分号时,程序返回一个编译器错误,表示仍然需要分号。