【发布时间】:2017-11-28 13:01:02
【问题描述】:
所以我需要将从 API 中提取的字符串数组转换为双精度数组,以便在某些计算中使用它们。这是我正在测试的内容:
public static double[] ConvertStringArrayToDoubleArray(String[] sArr)
{
double[] dArr = new double[sArr.length];
for (int i = 0; i < sArr.length; i++)
{
try
{
dArr[i] = Double.parseDouble(sArr[i]);
}
catch (NumberFormatException e)
{
System.out.println("Could Not Convert Properly at position " +
String.valueOf(i));
}
}
return dArr;
}
public static void main(String[] args) throws Exception
{
String[] dmgs = new String[5];
dmgs[0] = "1.2";
dmgs[1] = "1.3";
dmgs[2] = "";
dmgs[3] = "-";
dmgs[4] = "8";
double[] dDmgs = new double[dmgs.length];
dDmgs = ConvertStringArrayToDoubleArray(dmgs);
for (int i = 0; i < dDmgs.length; i++)
{
System.out.println(dDmgs[i]);
}
}
当我运行它时,我得到了这个作为输出:
Could Not Convert Properly at position 2
Could Not Convert Properly at position 3
1.2
1.3
0.0
0.0
8.0
这正是我想要的。但是当我用这个数组运行它时:
[1.5, 1.5, 2.7, 0.3, 1, 6, 10, 8, 3.5, 3, 8.5, 5, 2, 6, 6, 16, 17, 16, 15, 5, 16, 15, , , , 7, 3, 3, 6, 3, 4.5, 3, 5, 8, 6, 4.5, 3, 2.2, 6, 13, 9, 4, 7, 8, 5, 1.35, 2.7, 9, 8.5, 8, 9, 8.5, 8, 8, 6, 6, 7, 6, 6.5, 5, 3, -, 2, -, 0.2, 0.2, 0.2, 3, 3, -, -]
我得到了这个:
[1.5, 1.5, 2.7, 0.3, 1.0, 6.0, 10.0, 8.0, 3.5, 3.0, 8.5, 5.0, 2.0, 6.0, 6.0, 16.0, 17.0, 16.0, 15.0, 5.0, 16.0, 15.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.0, 6.0, 4.5, 3.0, 2.2, 6.0, 13.0, 9.0, 4.0, 7.0, 8.0, 5.0, 1.35, 2.7, 9.0, 8.5, 8.0, 9.0, 8.5, 8.0, 8.0, 6.0, 6.0, 7.0, 6.0, 6.5, 5.0, 3.0, 0.0, 2.0, 0.0, 0.2, 0.2, 0.2, 3.0, 3.0, 0.0, 0.0]
*我使用 Arrays.toString() 来打印这些,这就是为什么会有空格。
无论如何,就我的一生而言,我无法弄清楚位置 22 到 28 的转换发生了什么,因为它似乎工作正常并且在我运行的测试中没有出错。我假设它只会将位置 22 到 24 设置为 0.0,然后在位置 25 处继续设置 7.0,但它没有这样做。
我该如何解决这个问题?
【问题讨论】:
-
您的输入与您得到的输出不一致,导致我相信其中一个或两个可能不准确。无论如何,您的
ConvertStringArrayToDoubleArray()方法看起来是正确的,并且您的测试用例按预期通过了。所以从那开始,然后继续。 -
发布一个完整的程序,包含输入,并重现错误。
-
你是如何输入字符串数组的?
标签: java arrays parsing type-conversion