簡體   English   中英

如何檢查數組中的所有元素是否在 Java 中都是偶數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM