5 回答

TA貢獻1810條經(jīng)驗 獲得超5個贊
問題是您break;
只退出內(nèi)部循環(huán)。即使在找到匹配項后,您仍會繼續(xù)外循環(huán),該循環(huán)將bool
在下一次迭代中設(shè)置為 false。
無需太多更改,您只需添加
if(bool){ break; }
一旦找到匹配項,就在外循環(huán)的末尾離開它。

TA貢獻1757條經(jīng)驗 獲得超7個贊
這是一個可能的解決方案
boolean checker (int[] array) {
if (array.length <= 3) {
return false;
} else {
for (int i = 0; i < array.length - 3; i++) {
if (array[i] % 2 == 0 && array[i + 1] % 2 == 0) {
int j = i + 2;
if (array[j] % 2 != 0 && array[j + 1] % 2 != 0) {
return true;
}
} else if (array[i] % 2 != 0 && array[i + 1] % 2 != 0) {
int j = i + 2;
if (array[j] % 2 == 0 && array[j + 1] % 2 == 0) {
return true;
}
}
}
return false;
}
}
}

TA貢獻1878條經(jīng)驗 獲得超4個贊
class Dcoder
{
public static void main(String args[])
{
int[] arr = {2, 4, 5, 7, 8, 9, 10};
boolean bool1 = false;
boolean bool2 = false;
for(int i = 1; i < arr.length; i++){
if(arr[i-1]%2 == 0 && arr[i]%2 == 0){
bool1 = true;
}
else if(arr[i-1]%2 != 0 && arr[i]%2 != 0){
bool2 = true;
}
}
System.out.println("2Odd + 2Even : " + (bool1 && bool2));
}
}

TA貢獻1829條經(jīng)驗 獲得超7個贊
您也可以使用位測試來完成。我擴展了布爾結(jié)構(gòu)以使其更容易理解,但如果需要,它們可以全部組合成一個。請注意,低位決定了數(shù)字能否被 2 整除。
int[] vals = { 2, 4, 5, 7, 9, 11, 10, 14
};
for (int i = 0; i < vals.length - 3; i++) {
int a = vals[i];
int b = vals[i + 1];
int c = vals[i + 2];
int d = vals[i + 3];
boolean firstTwoOdd = ((a & b) & 1) == 1;
boolean firstTwoEven = ((a | b) & 1) == 0;
boolean secondTwoOdd = ((c & d) & 1) == 1;
boolean secondTwoEven = ((c | d) & 1) == 0;
boolean oddeven = firstTwoOdd && secondTwoEven;
boolean evenodd = firstTwoEven && secondTwoOdd;
System.out.printf("(%d,%d,%d,%d) : %b%n",
a,
b,
c,
d,
oddeven || evenodd);
}

TA貢獻1891條經(jīng)驗 獲得超3個贊
您的代碼比需要的要復(fù)雜一些;嘗試使您的程序盡可能簡單。在開始編寫代碼之前,請仔細考慮實現(xiàn)目標(biāo)所需的步驟并將它們列出來。在這種情況下,您只需要檢查數(shù)組中每組 4 個相鄰元素。
是這樣的:
public static void main(String[] args) {
int[] a = { ... };
System.out.println("2Odd+2Even:" + has2Odd2Even(a));
}
public static boolean has2Odd2Even(int[] a) {
int end = a.length - 4;
for (int i = 0; i <= end; i++) {
if (odd(a[i])) {
if (odd(a[i + 1]) && !odd(a[i + 2]) && !odd(a[i + 3])) {
// 0 & 1 are odd, 2 & 3 are even
return true;
}
} else if (!odd(a[i + 1]) && odd(a[i + 2]) && odd(a[i + 3])) {
// 0 & 1 are even, 2 & 3 are odd
return true;
}
}
return false;
}
public boolean odd(int i){
return (i & 1) == 1;
}
添加回答
舉報