Syn*_*oon 3 java arrays parsing
我想将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]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我总是收到这个例外:
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)
Run Code Online (Sandbox Code Playgroud)
我不明白为什么我不能简单地将解析后的对象保存到数组中,尽管如此
Object [] arr = new Object [2];
完全用于在Array中存储不同的对象.
现在有人如何将这个String解析为整数并将其保存在数组中?
Jon*_*eet 10
这是导致您遇到的直接问题的问题:
arr = input.split(";", -1);
Run Code Online (Sandbox Code Playgroud)
您将类型对象的引用分配给类型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);
Run Code Online (Sandbox Code Playgroud)
这会将内容复制String[]
到Object[]
相同大小的内容中.然后,您可以为该元素的任何元素分配新值Object[]
,并且该新值可以是Integer
引用.
someInt
顺便说一下,为什么你要初始化你忽略的值并不清楚.实际上,你甚至不需要变量:
arr[2] = Integer.valueOf((String) arr[2]);
Run Code Online (Sandbox Code Playgroud)
要么
arr[2] = Integer.valueOf(split[2]);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
453 次 |
最近记录: |