【问题标题】:How to pick the latest value that is not null?如何选择不为空的最新值?
【发布时间】:2015-08-10 15:02:12
【问题描述】:

我的数据如下所示:

fy|cycle|lea|course|section|description|ssn|uniq_stu_id|grade_1|grade_2|grade_3|grade_4|credit|Date
22|7|6003127|420000|4|BIOLOGY|6435|530|D|D|NULL|NULL|NULL|2012
22|7|6003127|420000|4|BIOLOGY|4328|152|NULL|NULL|B|NULL|NULL|2012
22|7|6003127|421000|1|CHEMISTR|429|1872|B|B|NULL|NULL|NULL|2012
22|7|6003127|422000|1|PHYSICS|1178|950|B|A|NULL|C|NULL|2012

我对grade_1、grade_2、grade_3 和grade_4 列感兴趣。我想选择最新的年级。 1,2,3 和 4 是学期,所以在第一行,我想从 Grade_2 中选择 D。同样,从最后一行,我想从 Grade_4 中选择 C。 在我的最终输出中,我只想用一列替换这 4 个等级列,显示最终或最新等级以及其他信息列。

我的做法如下:

FileReader fileReader = new FileReader(inputFile);
BufferedReader br = new BufferedReader(fileReader);

while ((line = br.readLine()) != null) {
    String[] parts = line.split("\\|");
    System.out.println(parts[11].toString());
    if (parts[11].toString() != "NULL") {
        final_grade = parts[11].toString();
    } else if (parts[10].toString() != "NULL") {
        final_grade = parts[10].toString();
    } else if (parts[9].toString() != "NULL") {
        final_grade = parts[9].toString();
    } else if (parts[8].toString() != "NULL") {
        final_grade = parts[8].toString();
    }
    else {
        final_grade = "N/A";
    }
}

使用此代码,我的输出为我提供了所有空值。我无法理解我错在哪里。有人可以帮忙吗?

【问题讨论】:

标签: java if-statement split bufferedreader


【解决方案1】:

必须使用equals() 来检查字符串是否相等。

== 用于字符串会比较对象而不是实际值。

【讨论】:

    猜你喜欢
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多