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
。Soarr[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]);
}