Java 试图在对象数组中用双精度替换字符串

Java 试图在对象数组中用双精度替换字符串,java,arrays,Java,Arrays,下面的代码将字符串解析为字符串对象,并将值放置在对象数组中 对于表示数字的任何字符串,它将尝试用双精度对象替换该字符串。但是,我得到以下例外情况: java.lang.ArrayStoreException:java.lang.Double 公共类主 { 公共静态void main(字符串[]args)引发异常 { String text=“一、二、123123.45”; Object[]行=text.split(“,”); for(int i=0;i

下面的代码将字符串解析为字符串对象,并将值放置在对象数组中

对于表示数字的任何字符串,它将尝试用双精度对象替换该字符串。但是,我得到以下例外情况:

java.lang.ArrayStoreException:java.lang.Double

公共类主
{
公共静态void main(字符串[]args)引发异常
{
String text=“一、二、123123.45”;
Object[]行=text.split(“,”);
for(int i=0;i

知道我做错了什么吗?为什么第二种情况有效而第一种情况无效?

Object[]row=text.split(“,”)
row
此处指的是类型为
String
的数组,但此处
row[i]=newdouble(row[i].toString())
,您正在分配一个
双精度
对象[]行=文本。拆分(“,”)
row
此处指的是类型为
String
的数组,但此处
row[i]=newdouble(row[i].toString()),您正在从

抛出以指示试图将错误类型的对象存储到对象数组中。例如,以下代码生成ArrayStoreException:

在您的代码中,您也在这样做。当你写作时

  Object[] row = text.split(",");
这变成了一个字符串数组。后来你又开始尝试

row[i] = new Double( row[i].toString() );
由于
字符串
不是
Double
,因此从

抛出以指示试图将错误类型的对象存储到对象数组中。例如,以下代码生成ArrayStoreException:

在您的代码中,您也在这样做。当你写作时

  Object[] row = text.split(",");
这变成了一个字符串数组。后来你又开始尝试

row[i] = new Double( row[i].toString() );
由于
String
不是
Double
,因此引发异常。

调用
text.split(“,”)
返回
字符串[]
。您可以将其分配给
对象[]
,但这不会改变其类型,它仍然是
字符串[]

如果您想做您正试图做的事情(这不是好的java编程,它更像是脚本编程,因为您没有使用编译时类型检查),那么您需要首先将数组复制到
对象[]

您可以这样做:

 String[] arr = text.split(",");
 Object[] row = Arrays.copyOf(arr, arr.length, Object[].class);
调用
text.split(“,”
返回一个
字符串[]
。您可以将其分配给
对象[]
,但这不会改变其类型,它仍然是
字符串[]

如果您想做您正试图做的事情(这不是好的java编程,它更像是脚本编程,因为您没有使用编译时类型检查),那么您需要首先将数组复制到
对象[]

您可以这样做:

 String[] arr = text.split(",");
 Object[] row = Arrays.copyOf(arr, arr.length, Object[].class);

哎呀,我读了API和所有东西,脑子里都乱七八糟,但它还是不知道。有一天晚上。。。。我会在10分钟内接受。哎呀……我读了API和所有东西,脑子里乱七八糟,但它还是不知道。有一天晚上。。。。10分钟后我接受。