首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有错误的字符串数组到双倍数组的转换问题

有错误的字符串数组到双倍数组的转换问题
EN

Stack Overflow用户
提问于 2017-06-25 21:46:36
回答 1查看 112关注 0票数 0

所以我需要将从API中提取的字符串数组转换为双精度数组,这样我就可以在一些计算中使用它们。下面是我测试的内容:

代码语言:javascript
复制
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

这就是我想要的。但是当我用这个数组运行它时:

代码语言:javascript
复制
[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, -, -]

我得到的结果是:

代码语言:javascript
复制
[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,但它不是这样做的。

我该如何解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2017-06-25 23:11:10

在字符串数组中,在16, 15之后和8, 6之前,从逗号可以看出有11个元素(前3个元素是空字符串)。在16.0, 15.0之后和8.0, 6.0之前的双精度数组中,只有7个元素(都是0.0)。因此,假设这些字符串来自调用ConvertStringArrayToDoubleArray()之前和之后的相同运行,那么显而易见的解释是,您的一些字符串包含逗号,因此不能被解析为双精度。但是,正如您的第一个输出所示,您的方法应该打印有关这些内容的消息。既然这些字符串都不能解析为0.0,那么在您的输出中不是有7条消息是关于字符串位置无法正确转换的吗?

例如,假设您的数组包含以下7个字符串:"", "", "", "7, 3", "3, 6", "3, 4.5", "3, 5"。这就解释了为什么字符串数组的输出包含…, , , , 7, 3, 3, 6, 3, 4.5, 3, 5, …,而双精度数组的输出包含…, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, …

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44746991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档