Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 数组中的偶数/奇数值_Java_Arrays_Boolean - Fatal编程技术网

Java 数组中的偶数/奇数值

Java 数组中的偶数/奇数值,java,arrays,boolean,Java,Arrays,Boolean,我在使用布尔方法时遇到问题,我想检查数组的所有值是否为偶数、奇数或两者都不是。我输入数组大小和数组值,但是“IsArrayEvent”方法一直输出“数组中的所有数字都是偶数”,即使我的数组是1,2,3,IsArrayEvent应该是false import java.util.Scanner; public class OddOrEven { public static boolean isArrayEven(int[] arrayValues, int arraySize)

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

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");
        }
    }

}
import java.util.Scanner;
公共级奥多列文{
公共静态布尔值IsArrayEvent(int[]ArrayValue,int arraySize){

对于(int i=0;i在我看来,您的测试和返回值应该是反向的。当您只找到一个偶数时,您现在将返回“整个数组为偶数”=true。您必须检查所有值,或者当您找到“is-even”函数中不为偶数的任何值时,返回false

一般来说,我建议最好迭代数组一次,并在迭代之前初始化两个布尔值;例如,“all_是奇数”和“all_是偶数”,并将它们初始化为true

然后,只需迭代整个数组一次,如果遇到一个值不满足所有的值,则只需将all_are_x设置为false

一旦all_为奇数/all_为偶数都为假,您可以通过打破循环进行优化

在这个迭代之后,您现在可以输出所有是偶数、奇数还是介于两者之间的值


Edge case当然是空集。

您返回得太早了。您需要稍微翻转并修改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;
}
公共静态布尔IsArrayEvent(int[]数组值,int arraySize){

对于(int i=0;i您的错误在于,每当您找到偶数或奇数时,都会返回true或false。这意味着您有一个整数数组
[2,1,3,5]
。当为该数组运行isEven方法时,它将返回true,但数组的第1、第2和第3个值是奇数。您需要做的与您现在所做的相反

public boolean isEven(int arr[]{

对于(int i=0;i,若在数组中找到奇数,则应发送false,若数组中的所有元素均为偶数,则应返回true

public static boolean isArrayEven(int[] arrayValues, int arraySize){
    for(int i = 0; i <= arraySize -1; i++) {
        if(arrayValues[i] % 2 != 0) { // if found an odd number
            return false;
        }
    }
    return true; // if not found any odd number means all number is even
}
公共静态布尔IsArrayEvent(int[]数组值,int arraySize){

对于(int i=0;i我有点同意Richard的观点,你需要一些布尔变量,但我会采取不同的方法:

布尔值=false; 布尔值containsOdd=false

循环遍历数组中的所有元素,一旦找到偶数,第一布尔变为真。同样,一旦找到奇数,就将第二布尔变为真。如果两个布尔值都变为真的话,你甚至可以考虑提前中断循环,因为没有什么可以从检查其余部分中学习到。数组的一部分


然后,在if/else块中使用这些布尔值。

您需要反转布尔检查语句,如果检查通过,则
返回false
。例如,当值为奇数时,应在isArrayEven方法中直接返回false。