实现复合模式时更换麻烦

时间:2017-10-13 09:05:29

标签: java

我正在研究复合模式。我有一个程序接受来自csv文件的数据,并且必须在树状结构中打印它。它就像....文件中有一个总统在根。总裁的员工ID将是经理的指定ID。因此,经理的员工ID将是包括分析师,文员,推销员在内的剩余员工的指定ID。这就是树。但是,我注意到了一个障碍。 在该行:

if (valueOfPresident == Integer.valueOf(b[3]).intValue())

在将总统员工ID与其他员工的指定ID进行比较时,遇到的是NULL (7839,'KING','PRESIDENT',NULL,'17 -NOV-81',5000,NULL,10) 而其他员工有这样的整数值 - > (7698, 'BLAKE', 'MANAGER',7839, '1-MAY-81',2850,NULL,30)。 因为我得到了一个例外。

Exception in thread "main" java.lang.NumberFormatException: For input string: "NULL"
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.valueOf(Unknown Source)
    at com.techlabs.compositepattern.project.CompositePattern.main(CompositePattern.java:34)

如何将NULL值替换为0?

程序代码是 -

    while ((line = br.readLine()) != null) {

        String[] b = line.split(",");

        if (b[3].equalsIgnoreCase("NULL")) {
            TopHierarchy tophierarchy = new TopHierarchy(b);

            valueOfPresident = (Integer.valueOf(b[0]).intValue());

            tophierarchy.showDetails();
            if (b[3].contains("NULL"))
            b[3].replace("NULL", "0000");


            if (valueOfPresident == Integer.valueOf(b[3]).intValue()) {
            TopHierarchy    tophierarchy1 = new TopHierarchy(b);
                tophierarchy.add(tophierarchy1);
                tophierarchy.showDetails();
                valueOfManager = Integer.valueOf(b[0]).intValue();

2 个答案:

答案 0 :(得分:0)

你有这个if语句:

if (b[3].equalsIgnoreCase("NULL")) {

当你在里面时,没有必要检查b [3]。你知道它是“NULL”所以你可以删除2 if语句。

答案 1 :(得分:0)

这没有任何作用:

b[3].replace("NULL", "0000");

字符串是不可变的。 replace方法返回一个新字符串。你需要:

b[3] = b[3].replace("NULL", "0000");

但是你在一个已经检查过b [3]等于" NULL"的块中调用它。所以没有必要把if (b[3].contains("NULL"))放在前面。