gpt4 book ai didi

java - 无法在对象数组中保存整数

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:38:51 27 4
gpt4 key购买 nike

我想将 String 从 Object[] 解析为 Integer 并将其保存在同一个地方,如下所示:

public class ArrParseTest {

public static void main(String[] args) {
Object[] arr = new Object[2];
String input = "Boo;Foo;1000";
Integer somInt = new Integer(0);

arr = input.split(";", -1);
somInt = Integer.parseInt((String) arr[2]);

arr[2] = somInt;

for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}

但我总是收到这个异常:

Exception in thread "main" java.lang.ArrayStoreException: java.lang.Integer
at main.ArrParseTest.main(ArrParseTest.java:16)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)

我不明白为什么我不能简单地将解析后的对象保存到数组中,虽然这是一个

Object[] arr = new Object[2];

正是为了在数组中存储不同的对象而设计的。

现在有人知道如何将此字符串解析为整数并将其保存在数组中吗?

最佳答案

这是导致您看到的直接问题的原因:

arr = input.split(";", -1);

您将对类型为 String[] 的对象的引用分配给类型为 Object[] 的变量。这很好,但这意味着您不能在数组中存储非字符串引用。

你可能想要:

String input = "Boo;Foo;1000";
Integer someInt = new Integer(0);

String[] split = input.split(";", -1);
Object[] arr = new Object[split.length];
System.arraycopy(split, 0, arr, 0, split.length);

这会将 String[] 的内容复制到相同大小的 Object[] 中。然后,您可以为 Object[] 的任何元素分配一个新值,那个新值可以是一个 Integer 引用。

顺便说一下,您不清楚为什么要将 someInt 初始化为您忽略的值。实际上,您甚至不需要变量:

arr[2] = Integer.valueOf((String) arr[2]);

arr[2] = Integer.valueOf(split[2]);

关于java - 无法在对象数组中保存整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25285572/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com