[英]How to check if all elements in array are even in Java
如何檢查數組中的所有元素是偶數還是奇數? 對於偶數,我嘗試這樣做:
public boolean isEvens(int[] array) {
for (int i = 0; i<array.length;i++) {
if ( i % 2 == 0) {
return true;
}
else {
return false;
}
}
}
但是有錯誤......提前謝謝!
true
。例如:
public boolean allEven(int[] array) {
for (int i = 0; i<array.length; i++) {
if (array[i] % 2 != 0) {
return false;
}
}
return true;
}
要檢查是否全部為偶數或全部為奇數:
public boolean allEvenOrAllOdd(int[] array) {
boolean hasOdd = false;
boolean hasEven = false;
for (int i = 0; i<array.length; i++) {
if (array[i] % 2 == 0) {
hasEven = true;
if (hasOdd) { // has both odds and evens
return false;
}
} else {
hasOdd = true;
if (hasEven) { // has both odds and evens
return false;
}
}
}
return true; // either all elements are odd or all elements are even
}
從 java 8 開始,使用 lambda 來減少代碼是一個很好的做法:
對於偶數:
return Arrays.stream(array).allMatch( i -> i % 2 == 0);
對於奇數:
return Arrays.stream(array).allMatch( i -> i % 2 == 1);
只需檢查奇數元素,如果不存在,則所有元素都是偶數。
public boolean isEvens (int[] array){
for (int i = 0; i < array.length; i++) {
if (array[i] % 2 != 0) {
return false;
}
}
return true;
}
您想比較索引i
處的數組元素,而不是i
本身。 檢查應該是if (array[i] % 2 == 0)
使用下面的代碼作為參考使用 a[i]
public static void isEvens() {
int [] array = {1,2,3,4,5};
for (int i = 0; i<array.length;i++) {
if (array[i] % 2 == 0) {
System.out.println("Even");
}
else {
System.out.println("Odd");
}
}
我建議使用遞歸,因為遞歸的運行時間將少於循環,還有一些代碼行。 我為此編寫了一個代碼,但是使用 c#,我將在下面發布它,它可能對您有所幫助,因為 java 中的語法與 c# 的語法非常相似。
public static bool isAllEvens(int[] a, int index)
{
if (index == 0 && a[index] % 2 == 0) return true;
else
{
if (a[index] % 2 == 0)
return true && isAllEvens(a, index - 1);
return false;
}
}
並調用此函數只需使用兩個參數(數組和 array.length - 1,即最后一個索引)調用它。
這是調用此函數的示例:
int[] a = new int[4];
a[0] = 8; a[1] = 4; a[2] = 8; a[3] = 8;
Console.WriteLine(isAllEvens(a, a.Length - 1));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.