如何选择非空的最新值?

时间:2015-08-10 15:02:13

标签: java if-statement split bufferedreader

我的数据如下:

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. 在我的最终输出中,我只需要一列替换这四个等级列,显示最终或最新等级以及其他信息列。

我的方法如下:

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";
    }
}

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

1 个答案:

答案 0 :(得分:1)

必须使用equals()检查字符串相等性。

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