错误:java中的可分数字代码

时间:2017-09-27 16:10:37

标签: java algorithm divider

我创建了一个代码,它接收一个数字和一个分隔符数组,并返回一个可被分隔符整除的数字数组。

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个错误,请在评论中回答,帮助很大。

2 个答案:

答案 0 :(得分:2)

您无法使用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();
}

答案 1 :(得分:1)

您必须与==进行比较,而不是分配值

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

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

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