当前位置: 首页 > 知识库问答 >
问题:

将整数对象转换为基元类型时出现问题

巩子实
2023-03-14
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;
    }

}

共有1个答案

翁和正
2023-03-14

arrays.aslist(elements)并不像您想象的那样,它返回包含int[]数组的列表,而不是数组的元素。不能创建基元列表。如果要使用List,必须首先将int转换为integer

您可以使用以下命令获取integer的列表

List<Integer> arrList = Arrays.stream(elements).boxed().collect(Collectors.toList());

但是,您的程序中仍然有一个错误,您将跳过数字。

for (int j = i + 1; j < arrList.size(); j++) {
  if (arrList.get(j).equals(current) && occurrences >= maxOccurrences) {
    arrList.remove(j); // This shortens the list causing us to skip the next element
    j--; // One hackish way is to go back one step

  } else if (arrList.get(j).equals(current)) {
    occurrences++;
  }
}
for (int j = arrList.size() - 1; j > i; j--) {
  if (arrList.get(j).equals(current) && occurrences >= maxOccurrences) {
    arrList.remove(j);
  } else if (arrList.get(j).equals(current)) {
    occurrences++;
  }
}
 类似资料:
  • 首先,如果这个问题看起来很愚蠢,请原谅。事实上,我是Java编程新手。我有以下代码: 编译此代码时,会引发< code>classCastException异常。为什么?。我知道< code>Object类型不能转换为< code>Integer类型。但事实上,数组< code>ob的每个元素都是< code>Integer类的一个实例,这意味着转换在逻辑上是正确的。我弄错了吗?。 提前谢谢。

  • 我有以下代码来返回对象数组,对象数组中填充了基元类型的结构元素,我不知道如何将基元类型转换为jobject,然后使用SetObjectArrayElement方法设置为ObjectArray, 下面是我的C结构信息 我的JNI代码 写入核心转储失败。核心转储已被禁用。要启用核心转储,请在再次启动Java之前尝试“ulimit-c unlimited” 包含更多信息的错误报告文件保存为:/data1

  • 问题内容: 我正在尝试从EditText字段中将两个数字加在一起。到目前为止,我有下面的代码,我相信它会将EditText字段“ pos1_deg”和“ pos2_deg”转换为整数deg1和deg2。 然后,我可以执行以下操作将它们添加在一起 然后degSum寄存器保存deg1和2的和。 然后要输出回“结果” EditText,我需要将整数degSum更改为字符串。我认为正确的方法是使用以下代码

  • 我正在创建一个由数组支持的泛型类型堆栈。当我尝试创建泛型类型数组时,Java不允许我这样做。有人告诉我,我必须创建一个类型为Object的数组,并将其转换为泛型类型。我已经将对象数组转换为类型,但如何处理Java不断给我的未检查类型错误? 这就是我目前所处的位置。 更新:我正在创建一个对象数组,然后在方法的末尾将返回类型转换为T类型。

  • 问题内容: 我正在使用返回“对象”类型的普通对象的Web服务。调试清楚地表明此对象中存在某种Array,因此我想知道如何将“ Object”转换为Array(或类似对象)? 我尝试了以下方法: 但是没有任何效果。我总是得到一个InvocationTargetException。 我究竟做错了什么? 编辑 : 可悲的是,我不得不删除指向显示Eclipse调试器输出的图像的链接,因为它不再可用。请不要

  • 我的服务以JSONArray的形式收到响应。我想将这个JSONArray转换为JavaObject(使用POJO类)。我使用Jackson API进行JSON到JavaObject的转换。我还为该转换编写了帮助类(类名:JsonUtil)。 请在下面找到我的 JSON 响应,其中包含 JSON 对象以及 JSON 数组。 由此,如果未显示数组,则可以进行转换。如果出现数组,则表示它抛出以下错误。