错误: java 中的整除数字代码

Errors: Divisible numbers code in java

我创建了一个代码,它接受一个数字数组和一个分隔符,returns 一个可以被分隔符整除的数字数组。

public class EvenNumbers {
    public static int[] divisibleBy(int[] numbers, int divider) {
        int i = 0;
        int[] divisibleNumbers = new int[0];
        while (i < numbers.length){
            if (numbers[i] % divider == 0){
                divisibleNumbers.push(numbers[i]);
                i++;
            } else {
                i++;
            }
        }
        return divisibleNumbers;
    }
}   

但是我收到一个我不知道如何修复的错误: 错误:在推送元素语句中找不到符号。

如果有人知道我如何解决这 2 个错误,请在评论中回答,非常感谢帮助。

你要和==比较,不能赋值

if (numbers[i] % divider == 0){

您正在创建一个包含 [0] 个元素的数组,其大小不可修改,请尝试使用列表或更大的数组

List<Integer> divisibleNumbers = new ArrayList<Integer>();

int[] divisibleNumbers = new int[numbers.length]; //since you will never get more numbers than those which are in numbers

并添加元素为:

divisibleNumbers.add(element); //list
divisibleNumbers[position] = element; //array

您不能使用 push() 向数组添加元素,这是 JavaScript 语法。

你想要的是一个列表,而不是一个数组,因为你事先不知道有多少元素会被divider整除,而数组的大小是固定的。

将您的方法简化为:

public static List<Integer> divisibleBy(int[] numbers, int divider) {
    List<Integer> divisibleNumbers = new ArrayList<>();
    for (int number : numbers) {
        if (number % divider == 0) {
            divisibleNumbers.add(number);
        }
    }
    return divisibleNumbers;
}

或选择更实用的方法:

public static int[] divisibleBy(int[] numbers, int divider) {
    return Arrays.stream(numbers)
            .filter(number -> number % divider == 0)
            .toArray();
}