java – 无法在对象数组中保存整数
发布时间:2020-12-15 04:43:58 所属栏目:Java 来源:网络整理
导读:我想将Object []中的String解析为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
我想将Object []中的String解析为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) 我不明白为什么我不能简单地将解析后的对象保存到数组中,尽管如此
完全用于在Array中存储不同的对象. 现在有人如何将这个String解析为整数并将其保存在数组中? 解决方法
这是导致您遇到的直接问题的问题:
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,arr,split.length); 这会将String []的内容复制到相同大小的Object []中.然后,您可以为Object []的任何元素分配新值,并且该新值可以是Integer引用. 顺便说一下,为什么你要将someInt初始化为你忽略的值,这一点尚不清楚.实际上,你甚至不需要变量: arr[2] = Integer.valueOf((String) arr[2]); 要么 arr[2] = Integer.valueOf(split[2]); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |