Java 不能';t在对象数组中保存整数

Java 不能';t在对象数组中保存整数,java,arrays,parsing,Java,Arrays,Parsing,我想将对象[]中的字符串解析为整数,并将其保存在相同的位置,如下所示: 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.

我想将对象[]中的字符串解析为整数,并将其保存在相同的位置,如下所示:

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]);
        }
    }
}
我不明白为什么我不能简单地将解析后的对象保存到数组中,我认为

Object[]arr=新对象[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);
这将把
字符串[]
的内容复制到相同大小的
对象[]
。然后,您可以为
对象[]
的任何元素指定一个新值,该新值可以是
整数
引用

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

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


ArrayStoreException
是一种运行时异常,当要添加到数组中的对象的类型与数组元素应为的对象类型不同时,会发生该异常

在您的代码中,当将
somInt
分配到
arr[2]
时,数组将保存
String
类型的对象,而
somInt
是一个
整数。您可以按如下方式分配
字符串

arr[2] = "" + somInt;

String的
split
方法返回类型为
String

您正在尝试将整数值存储到该行的
字符串
类型数组中:

arr[2] = somInt;

字符串
扩展
对象
时,不会出现编译器错误。但是您会得到运行时错误,因为在执行时,
arr
变成
String
类型数组。

ArrayStoreException被抛出,以指示试图将错误类型的对象存储到对象数组中

    Object[] arr = new Object[2];
    String  input = "Boo;Foo;1000";
    Integer somInt = new Integer(0);

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

    arr[2] = ""+somInt; //storing non string value will give error 

    for (int i = 0; i < arr.length; i++) 
    {
        System.out.println(arr[i]);
    }
Object[]arr=新对象[2];
字符串输入=“Boo;Foo;1000”;
整数somInt=新整数(0);
arr=input.split(“;”,-1);
somInt=Integer.parseInt(arr[2].toString());
arr[2]=“”+somInt//存储非字符串值将导致错误
对于(int i=0;i
Object[]arr=新对象[2]
为您提供一个包含两个位置的数组,
0
1
。So
arr[2]=somInt将是一个问题,不管其他任何事情…我想写清楚的代码非常容易理解,所以我初始化了这些临时代码variable@Synoon:易于理解的清晰代码仅在需要时声明变量,因为这样的原因,我不会用一个伪值来初始化它。好的,在你的编辑之后,我有一个完美的解决方案来解决我的问题thx!问题是现在我已经将整数值存储为字符串
arr[2] = somInt;
    Object[] arr = new Object[2];
    String  input = "Boo;Foo;1000";
    Integer somInt = new Integer(0);

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

    arr[2] = ""+somInt; //storing non string value will give error 

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