2017-10-13 56 views
0

我正在處理複合模式。我有一個程序接受來自csv文件的數據,並且必須以樹狀結構打印它。它是......文件有一位總統在根。總裁的職員編號將成爲經理的指定編號。因此,經理的員工編號將成爲剩餘員工的指定編號,其中包括分析師,職員,銷售員。這是樹。但是,我注意到一個障礙。 在行:執行復合模式時替換時遇到問題

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

在比較與其他員工的指定ID總統員工ID,它遇到的是一個NULL (7839, 'KING', '總統',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) 

如何用0代替NULL值?

程序代碼 -

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

你有這樣的if語句:

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

當你在它裏面,有沒有必要檢查B [3]。你知道它是「NULL」,所以你可以刪除2條if語句。

+0

那麼我如何檢查和隔離其他員工的經理。我需要檢查員工ID是否是經理的指定ID。如同文件摘錄:7698,'BLAKE','MANAGER',7839,'1-MAY-81',2850,NULL,30和7839,'KING','PRESIDENT',0000,'17 -NOV-81 ',5000,NULL,10。這裏的經理 - 7839的名稱編號是僱員,如果總統 - 7839 –

0

這無助:

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

字符串是不可改變的。 replace方法返回一個新的字符串。你需要:

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

但是你在一個已經檢查b [3]等於「NULL」的塊內調用它。所以沒有必要在前面加上if (b[3].contains("NULL"))

+0

我需要將b [3] == NULL轉換並替換爲數字值 –

+0

我知道。所以,按照我的回答說。 – DodgyCodeException