如何防止NaN值附加到ArrayList?

时间:2020-04-27 03:39:22

标签: java

我在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]

谢谢

2 个答案:

答案 0 :(得分:3)

将值与NaN进行比较,并且只有在false时才添加。

def courses():
    p = 0
    classes = []
    while p <= 5:
        name = input('Please enter the name of the class :')
        classes.append(name)
        p += 1
    print(classes)
    avg_grade = func(classes)
    # Print avg_grade with float 2 number
    print('avg_grade: ', "{:.1f}".format(avg_grade))


def func(classes):
    g = 0
    # Changed letter GPA
    gpas = {
        'A+': 4.0,
        'A': 3.7,
        'B+': 3.33,
        'B': 3,
        'B-': 2.7,
        'C+': 2.3,
        'C': 2,
        'C-': 1.7,
        'D+': 1.3,
        'D': 1,
        'D-': 0.7,
        'F': 0.0,
    }

    # List of number grades
    grades = []
    while g < len(classes):
        # Added class name
        grade = input(f'Enter your letter grade of {classes[g]}:')
        grade = grade.upper()
        # Check valid letter grade
        if grade in gpas:
            grades.append(gpas[grade])
            g += 1
        else:
            # Require re-enter valid letter
            valid_letters = ', '.join(gpas.keys())
            print('Please enter a valid letter grade. The valid letters is: ', valid_letters)

    return sum(grades) / len(classes)

courses()

答案 1 :(得分:1)

只需对宽度进行测试:if(width.get(i)== NaN){i ++},不要使用for,请使用do .. while