以下代码将String解析为String Objects,并将值放在Object数组中。
对于表示数字的任何字符串,它会尝试用Double对象替换String。但是我得到以下例外:
java.lang.ArrayStoreException:java.lang.Double
input {
color: dodgerblue;
font-size: 28px;
font-weight: bold;
font-family: arial;
background: none;
border: none;
width: 220px;
padding: 0px;
margin: 0px;
position: relative;
display: inline-block;
}
div[droppable="true"] {
width: 450px;
height: 300px;
border: 1px solid #000;
}
div[draggable="true"] {
width: 250px;
}
div[draggable="true"]:hover {
cursor: pointer;
}
知道我做错了什么吗?为什么第二种情况有效但不是第一种?
答案 0 :(得分:3)
抛出此异常表示已尝试将错误类型的对象存储到对象数组中。例如,以下代码生成ArrayStoreException:
Object x[] = new String[3];
x[0] = new Integer(0); //exception
在您的代码中,您也在做同样的事情。当你写
Object[] row = text.split(",");
这成了一个String的数组。后来你试图做
row[i] = new Double( row[i].toString() );
由于String
不是Double
,因此抛出异常。
答案 1 :(得分:2)
Object[] row = text.split(",");
,此处row
指的是String
类型的数组,但在row[i] = new Double( row[i].toString() );
,您指的是double
答案 2 :(得分:1)
致电text.split(",")
会返回String[]
。您可以将其分配给Object[]
,但不会更改其类型,它仍然是String[]
。
如果你想做你想做的事情(这不是很好的java编程,它更像是脚本编程,因为你不使用编译时类型检查)那么你需要将数组首先复制到Object[]
你可以这样做:
String[] arr = text.split(",");
Object[] row = Arrays.copyOf(arr, arr.length, Object[].class);