我正在研究复合模式。我有一个程序接受来自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();
答案 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"))
放在前面。