将主方法中的变量与另一个Java方法连接

将主方法中的变量与另一个Java方法连接,java,Java,如果参数为偶数,则该方法应返回true,或者 否则就错了。程序的主要方法应该使用循环来生成100个随机整数。它应该使用isEven方法来确定每个随机数是偶数还是奇数。所有这些都完成了 这是我无法理解的部分 循环完成后,程序应显示生成的偶数和奇数 这是我的代码: import java.util.Random; public class EvenOdd { public static void main(String[] args) { Random rand

如果参数为偶数,则该方法应返回true,或者 否则就错了。程序的主要方法应该使用循环来生成100个随机整数。它应该使用isEven方法来确定每个随机数是偶数还是奇数。所有这些都完成了

这是我无法理解的部分

循环完成后,程序应显示生成的偶数和奇数

这是我的代码:

import java.util.Random;

public class EvenOdd
{

    public static void main(String[] args)
    {

        Random random = new Random();

        int randomInteger = 0;

        for(int i = 0; i < 100; i++){
            randomInteger = random.nextInt();
            System.out.println("Random Integer: " + randomInteger);
            EvenOdd(randomInteger);
        }
    }

    public static void EvenOdd(int x)
    {

        int oddNumbers = 0;
        int evenNumbers = 0;

        if ((x % 2) == 0)
        {
            System.out.println("Even");
            evenNumbers++;

        }
        else
        {
            System.out.println("Odd");
            oddNumbers++;

        }
    }
}
试试这个:

public static void main(String[] args)
{

    Random random = new Random();

    int randomInteger = 0;
    int oddNumbers = 0;
    int evenNumbers = 0;

    for(int i = 0; i < 100; i++){
        randomInteger = random.nextInt();
        System.out.println("Random Integer: " + randomInteger);
        if(evenOdd(randomInteger)) evenNumbers++;
        else oddNumbers++;
    }
    System.out.printf("Even numbers: %d - Odd numbers: %d", evenNumbers, oddNumbers);
}

public static boolean evenOdd(int x)
{
    if ((x % 2) == 0)
    {
        System.out.println("Even");
        return true;
    }
    else
    {
        System.out.println("Odd");
        return false;
    }
}

您最初的方法不起作用,因为每次调用该方法时,您都会将oddNumbers和evenNumbers变量初始化为0。

将oddNumbers和evenNumbers变量定义为静态类变量,循环后可以打印这两个值。

Java不是JavaScript。此外,它不具有C++作为函数中的静态变量的能力。 方法中声明的变量是局部变量。每次代码到达方法内的变量定义并在退出方法后销毁时,都会发生变量初始化

所以你有这样的变体:

1计算主方法和实用方法返回指示器中的数字

1.1布尔型

public static boolean isEven(int x){
    return (x % 2) == 0;
};
1.2枚举

private enum NumberType {
    EVEN,
    ODD
}

public static NumberType getNumberType (int x) {
    if ((x % 2) == 0) {
        return NumberType.EVEN;
    } else {
        return NumberType.ODD;
    }
};
2.将变量设置为静态:

public class EvenOdd {

    private static int evenNumbersCount = 0;
    private static int oddNumbersCount = 0;

    public static void main(String[] args) {
        // your code
    }

    public static void countNumberType (int x) {
        if ((x % 2) == 0) {
            ++evenNumbersCount;
        } else {
            ++oddNumbersCount;
        }
    }
}
3在某些复杂情况下,您需要将容器传递给您的方法:

public class EvenOdd {

    private static final String EVEN = "even";
    private static final String ODD = "odd";

    public static void main(String[] args) {
        // initialize container
        Map<String, Integer> evenOddCounts = new HashMap<>(2, 1);
        evenOddCounts.put(EVEN, 0);
        evenOddCounts.put(ODD, 0);

        Random random = new Random();
        int randomInteger = 0;
        for (int i = 0; i < 100; i++) {
            randomInteger = random.nextInt();
            countNumberType(evenOddCounts, randomInteger);
        }

        System.out.println(evenOddCounts.toString());
    }

    public static void countNumberType(Map<String, Integer> counts, int x) {
        if ((x % 2) == 0) {
            counts.compute(EVEN, (numberType, count) -> ++count);
        } else {
            counts.compute(ODD, (numberType, count) -> ++count);
        }
    }
}
请注意,evenNumber和oddNumber是EvenOdd方法的局部。每次代码到达此函数的}时,它们就不再存在。尝试用奇偶法定义它们。