Java 试图在对象数组中用双精度替换字符串
下面的代码将字符串解析为字符串对象,并将值放置在对象数组中 对于表示数字的任何字符串,它将尝试用双精度对象替换该字符串。但是,我得到以下例外情况: java.lang.ArrayStoreException:java.lang.DoubleJava 试图在对象数组中用双精度替换字符串,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
公共类主
{
公共静态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分钟后我接受。