Java中的'for'循环中断不起作用

时间:2013-05-08 20:31:00

标签: java for-loop

我有以下代码:

private boolean result = false;
public boolean checkHourExist(int hourfrom,
                              int minutefrom,
                              int hourto,
                              int minuteto,
                              int day,
                              int templateId)
{
    List<templates> t = getAllTemplatesWithDays();

    for (templates tem : t)
    {
        if(day == -1 | tem.Temp_DayId == day)
        {
            if(tem.Temp_HourFrom  >= hourfrom & tem.Temp_HourTo == hourto )
            {
                if(tem.Temp_HourFrom  == hourfrom)
                {
                    if(tem.Temp_MinFrom == minutefrom )
                    {
                        result=  true;
                        break;
                    }
                    else if(minutefrom < tem.Temp_MinFrom  &  minuteto >= tem.Temp_MinTo )
                    {
                        result =  true;
                        break;
                    }
                }
                else
                {
                    result =  true;
                    break;
                }
            }
            else if(tem.Temp_HourFrom  == hourfrom  & tem.Temp_HourTo < hourto )
            {
                result =  true;
                break;
            }
            else if(tem.Temp_HourFrom  > hourfrom  & tem.Temp_HourTo < hourto )
            {
                result =  true;
                break;
            }
        }
    }
    return result;
}

当代码转到我的if之一时,循环永远不会中断并继续直到完成,并且我的变量结果不会采用真值。我认为这可能是愚蠢的,但我看不出有什么不妥。

2 个答案:

答案 0 :(得分:8)

您必须将|中的&if加倍。

||表示或 &&表示和

|&是双向运营商。

为了澄清我的回答,你的break条件对我来说似乎很好,我在代码中看到的唯一真正问题是我提到的运算符。

答案 1 :(得分:2)

如何返回而不是破坏。从我的角度来看,这使它更具可读性

private boolean result = false;
public boolean checkHourExist(int hourfrom,int minutefrom,int hourto,int minuteto,int day,int templateId)
{

    List<templates> t = getAllTemplatesWithDays();

    for (templates tem : t) 
    {
        if(day == -1 | tem.Temp_DayId == day)
        {
            if(tem.Temp_HourFrom  >= hourfrom & tem.Temp_HourTo == hourto )
            {
                if(tem.Temp_HourFrom  == hourfrom)
                {
                    if(tem.Temp_MinFrom == minutefrom )
                    {
                        return  true;
                    }
                    else if(minutefrom < tem.Temp_MinFrom  &  minuteto >= tem.Temp_MinTo ) {
                        return  true;
                    }
                } else
                {
                    return  true;
                }
            }
            else if(tem.Temp_HourFrom  == hourfrom  & tem.Temp_HourTo < hourto ) {
                return  true;
            }
            else if(tem.Temp_HourFrom  > hourfrom  & tem.Temp_HourTo < hourto ) {
                return  true;
            }
        }
    }

    return false;
}