我创建了一个代码,它接收一个数字和一个分隔符数组,并返回一个可被分隔符整除的数字数组。
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个错误,请在评论中回答,帮助很大。
答案 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