java - 如何选取不为空的最新值?

标签 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。 在我的最终输出中,我只需要一列替换这 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";
    }
}

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

最佳答案

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

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

关于java - 如何选取不为空的最新值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31922968/

相关文章:

java - 铁路网图

java - 两者哪个更好 : if-elif-else or if-else

java - 生命游戏 算法/if else 语句的结构

python - 将列表拆分为子列表中的 n 个项目,并添加剩余部分

python - 在 Python 中垂直合并列表列表的两列

执行代码时显示java.lang.ClassNotFoundException : oracle. jdbc.internal.XMLTypeIntf 异常?

java - 如何在 onClick 函数中正确设置 findViewById

java - 在同一 Java 应用程序中使用不同的 Kerberos KDC 进行身份验证

php - if 语句计算不正确

javascript - 在 Javascript 中使用一次(而不是两次)分隔符拆分字符串