2014-04-13 162 views
0

即時得到當試圖忽略2號之間出現錯誤如下標籤的錯誤消息:在文本文件中即時閱讀距離也有一些單位數字和一些兩位數這是爲什麼我正在使用.substring(42,44);忽略空白和製表符在Java

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "5 " 
    at java.lang.NumberFormatException.forInputString(Unknown Source) 
    at java.lang.Integer.parseInt(Unknown Source) 
    at java.lang.Integer.parseInt(Unknown Source) 
    at readTheFile.setSenID(readTheFile.java:230) 
    at Sensor.setSensorID(Sensor.java:69) 
    at getDrink.<init>(getDrink.java:22) 
    at controlPanel$1.actionPerformed(controlPanel.java:54) 

我已經嘗試了幾種替換空白和選項卡的選項,如temp.replaceAll( 「// T」, 「」)或( 「\ S +」, 「」)。我似乎不能找到一種方法來獲得只讀的int。有任何想法嗎?

繼承人的一段代碼,我認爲是造成問題

BufferedReader bufferedReader = new BufferedReader(fileReader); 


      int lineNumber = 0; 

      ArrayList<Integer> SenID = new ArrayList<Integer>(); 
      while((line=bufferedReader.readLine())!=null){ 
       lineNumber++; 
       if (lineNumber >= 24) { 
        String temp = line.substring(42, 44); 
        temp.replaceAll("//s+", ""); //think error is here 
        int x = Integer.parseInt(temp); 
        SenID.add(x);       
         } 
        } 

這裏的文件IM從

25-Feb-2008 00:20:14 25-Feb-2008 00:22:57 24 1 
25-Feb-2008 09:33:41 25-Feb-2008 09:33:42 24 1 
25-Feb-2008 09:33:47 25-Feb-2008 17:21:12 24 1 
25-Feb-2008 09:36:43 25-Feb-2008 09:37:04 5 1 
25-Feb-2008 09:37:20 25-Feb-2008 09:37:23 6 1 
25-Feb-2008 09:37:51 25-Feb-2008 09:37:52 14 1 
25-Feb-2008 09:37:55 25-Feb-2008 09:37:56 14 1 
25-Feb-2008 09:37:58 25-Feb-2008 09:38:01 6 1 

回答

2

閱讀這

temp.replaceAll("//s+", ""); 

應該

temp = temp.replaceAll("//s+", ""); 

字符串是不變的,所以方法,如replaceAll()trim()等將返回一個新的字符串,而不是修改現有的一個。