【发布时间】:2019-11-03 11:00:28
【问题描述】:
我正在尝试在 codewars 上完成这个挑战:https://www.codewars.com/kata/554ca54ffa7d91b236000023/train/java 我将原始数组更改为数组列表,但随后我必须使用数组列表中的值与原始类型进行一些比较。
我尝试使用 (int) 转换 Integer 对象,但仍然存在转换错误。当我尝试执行 (int)(arrList.get(j)).equals(current) 时,它告诉我布尔值无法转换为 int。
import java.util.*;
public class EnoughIsEnough {
public static int[] deleteNth(int[] elements, int maxOccurrences) {
ArrayList arrList = new ArrayList<>(Arrays.asList(elements));
for (int i = 0; i < arrList.size(); i++) {
int current = (int)arrList.get(i);
int occurrences = 1;
for (int j = i + 1; j < arrList.size(); j++) {
if (arrList.get(j).equals(current) && occurrences >= maxOccurrences) {
arrList.remove(j);
} else if (arrList.get(j).equals(current)) {
occurrences++;
}
}
}
int arr[] = new int[arrList.size()];
for (int i = 0; i < arrList.size(); i++) {
arr[i] = (int) arrList.get(i);
}
return arr;
}
}
它已编译,但测试显示:类 [I cannot be cast to class java.lang.Integer ([I and java.lang.Integer are in module java.base of loader 'bootstrap')
【问题讨论】:
-
[I是一种数组类型,因此您无法将其转换为Integer
标签: java arrays arraylist casting