如何防止 NaN 值附加到 ArrayList?

Posted

技术标签:

【中文标题】如何防止 NaN 值附加到 ArrayList?【英文标题】:How to prevent NaN values appending to ArrayList? 【发布时间】:2020-08-10 13:31:53 【问题描述】:

我将数据存储在 DoubleTimeSeries 中:

DoubleTimeSeries width = DoubleTimeSeries.getDoubleTimeSeries(connection, userId, "Width");
DoubleTimeSeries height = DoubleTimeSeries.getDoubleTimeSeries(connection, userId, "Height"); 

我将上述结果添加到 ArrayList 中:

ArrayList<String> myArray = new ArrayList<>();
for (int i = 0; i < width.size(); i++) 
    myArray.add(width.get(i) + "," + height.get(i) );

System.out.println("My Array: \n" + myArray);

我的问题:我的文件中的某些宽度或高度值是空的(它是 NaN),当我将它们添加到我的 ArrayList 中时,我得到如下:

[NaN,NaN, 25,50, 55, 60, NaN,NaN, 45,56]  

现在:如何防止(或忽略)这些 NaN 值添加到我的 ArrayList 中。我希望 ArrayList 结果为:

[25,50, 55, 60, 45,56]

谢谢

【问题讨论】:

这能回答你的问题吗? How do you test to see if a double is equal to NaN? @cutiko 感谢您的评论。我已经尝试过了,我在 for 循环中编写了 if 语句,但没有奏效。 只添加一个宽度测试:if (width.get(i)==NaN)i++ 并且不要使用for使用do .. while 【参考方案1】:

将值与 NaN 进行比较,如果为 false,则仅添加。

for (int i = 0; i < width.size(); i++) 
    if (!Double.isNaN(width.get(i)) && !Double.isNaN(height.get(i))) 
        myArray.add(width.get(i) + "," + height.get(i) );
    

【讨论】:

感谢您的评论。这有什么包括吗?我收到cannot find symbol method isNan(double) @Bilgin 这是isNaN 不是isNan @VladislavKryshtanovskiy 已批准。【参考方案2】:

只需为宽度添加一个测试:if (width.get(i)==NaN)i++ 并且不要使用for 使用do .. while

【讨论】:

以上是关于如何防止 NaN 值附加到 ArrayList?的主要内容,如果未能解决你的问题,请参考以下文章

防止 pandas 将 None 读为 Nan

如何在Java中的ArrayList末尾附加元素?

如何将arraylist逐行附加到txt文件中?

如果ArrayList的最后一个元素如何排除字符附加

为啥 nan 可以通过重复计算来防止?

防止在java中两次显示Arraylist值