java:if.else奇怪的行为

时间:2013-12-21 15:19:14

标签: java android if-statement

我遇到了一些if-else条件的问题,这是代码:

    if((hour<=16 && min<30)||(hour>=21 && min>0))
    { //copy of if#3
        Log.d("baja", "copy");
        message="something2";
    }

    if ((day>=1 && month>=4) && (day<=30 && month<=9)) 
    { //if#1

        if((hour<=16 && min<30)||(hour>=23 && min>0))
        { //if#2
            message="something";
        }
    }//end of if#1
    else
        { //else for if#1
        Log.d("baja", "before if#3 ");
        if((hour<=16 && min<30)||(hour>=21 && min>0)){ //if#3
            Log.d("baja", "if#3");
            message="something2";
        }
    }

问题是,如果流程进入其他地方,如果#3不起作用,但是如果#1工作正常,副本我就放在外面......问题是什么?

我现在无法发布确切的日志,但我可以看到“复制”和“之前如果#3”

1 个答案:

答案 0 :(得分:1)

我想我知道你要做什么(如果我理解你的问题)。原因是else块附加到高级if块,而不是它的内部逻辑。如果if#1返回false,则不会发生任何事情,如果是,则它将测试#2 - &gt;如果这是假的,它将执行else语句。如果这不是您的问题,请提供堆栈跟踪请求rattmuff

if ((day>=1 && month>=4) && (day<=30 && month<=9))
{
    if((hour<=16 && min<30)||(hour>=23 && min>0))
    {
    message="something";
    }//if#2
    else
    {
     Log.d("baja", "before if#3 ");
    }//else
}//if#1
else if((hour<=16 && min<30)||(hour>=21 && min>0))
{
    Log.d("baja", "if#3");
    message="something2";
}//if#3