首页 > 解决方案 > 数组中的偶数/奇数值

问题描述

我在使用布尔方法时遇到问题,我想检查数组是偶数、奇数还是两者都不是。我输入了数组大小和数组值,但是“isArrayEven”方法一直输出“数组中的所有数字都是偶数”,即使我的数组是 1、2、3 并且 isArrayEven 应该是假的。

import java.util.Scanner;

public class OddOrEven {
    
    public static boolean isArrayEven(int[] arrayValues, int arraySize){

        for(int i = 0; i <= arraySize -1; i++)
        {
            if(arrayValues[i] % 2 == 0)
            {
                return true;
            }
        }
        return false;
    }

    public static boolean isArrayOdd(int[] arrayValues, int arraySize){

        for(int i = 0 ; i < arraySize ; i++)
        {
            if(arrayValues[i] % 2 == 1)
            {
                return true;
            }
        }
        return false;
    }

    public static void main(String[] args) {
        
        Scanner scan = new Scanner(System.in);

        int arraySize = scan.nextInt();             
        int[] arrayValues = new int[arraySize];     

        for(int i = 0; i <= arraySize-1; i++)
        {
            arrayValues[i] = scan.nextInt();
        }
        
        if(isArrayEven(arrayValues,arraySize) == true)
        {
            System.out.println("all numbers in array is even");
        }else if(isArrayOdd(arrayValues,arraySize) == true)
        {
            System.out.println("all numbers in arrat is odd");
        }else if(isArrayEven(arrayValues,arraySize) == false && isArrayOdd(arrayValues,arraySize) == false)
        {
            System.out.println("both have even and odd");
        }
    }

}

标签: javaarraysboolean

解决方案


你回来得太早了。您需要稍微翻转和修改您的 if 语句。看看这个:

public static boolean isArrayEven(int[] arrayValues, int arraySize){

    for(int i = 0; i <= arraySize -1; i++)
    {
        if(arrayValues[i] % 2 != 0)
        {
            return false;
        }
    }
    return true;
}

public static boolean isArrayOdd(int[] arrayValues, int arraySize){

    for(int i = 0 ; i < arraySize ; i++)
    {
        if(arrayValues[i] % 2 == 0)
        {
            return false;
        }
    }
    return true;
}

在这里,我稍微修改了 if 语句。

在该isArrayEven方法中,我false在第一次出现奇数时返回。如果没有odd出现数字,我返回true.

在该isArrayOdd方法中,我false在第一次出现偶数时返回。如果没有偶数出现,我返回true.


推荐阅读