尝试用对象数组中的Double替换String

时间:2015-11-28 04:00:29

标签: java arrays

以下代码将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;
}

知道我做错了什么吗?为什么第二种情况有效但不是第一种?

3 个答案:

答案 0 :(得分:3)

来自ArrayStoreException

的文档
  

抛出此异常表示已尝试将错误类型的对象存储到对象数组中。例如,以下代码生成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);