首页 > 解决方案 > 两个偶数和两个奇数并排出现

问题描述

给定一个整数数组,如果两个偶数和两个奇数在数组中相邻出现,则打印 true

我试图使用“布尔”解决这个问题,但没有得到预期的结果。

int[] arr={2,4,5,7,8,9,10};
int len=arr.length;
boolean bool = true;

for (int i=0; i<len-1; i++)
{
    int n=arr[i];
    int m=arr[i+1];
    if (n%2==0 && m%2==0)
    {
        for (int j=i+2; j<len-1; j++)
        {
            int a=arr[j];
            int b=arr[j+1];
            if (a%2!=0 && b%2!=0)
            {
                bool=true;
                break;
            }
            else
                bool=false;
        }
    }
    else
    {
        for (int j=i+2; j<len-1; j++)
        {
            int a=arr[j];
            int b=arr[j+1];
            if (a%2==0 && b%2==0)
            {
                bool=true;
                break;
            }
            else
                bool=false;
        }
    }
}
System.out.println("2Odd+2Even:"+bool);

预期结果2Odd+2Even:true

实际结果2Odd+2Even:false

标签: java

解决方案


问题是您break;只退出内部循环。即使在找到匹配项之后,您仍然会继续外循环,该循环将bool在下一次迭代中设置为 false。
无需改变太多,您可以简单地添加

if(bool){
    break;
}

找到匹配项后,在外循环结束时将其保留。


推荐阅读