2011-07-10 160 views
2

我不斷收到此異常:168顯示java.lang.NullPointerException

Exception in thread "Thread-1" java.lang.NullPointerException 
     at Info.<init>(Info.java:168) 
     at Rcon.data(Rcon.java:130) 
     at Rcon$1.run(Rcon.java:105) 

線處於bot.redScore =的Integer.parseInt(matcher.group(2));

else if(str.indexOf("current score") != -1) { 
     pattern = "Team \\\"(\\w+)\\\" current score \\\"(\\d+)\\\""; 
     p = Pattern.compile(pattern); 
     matcher = p.matcher(str); 
     if(matcher.find()) { 
      if(matcher.group(1).equalsIgnoreCase("Red")) { 
       bot.redScore = Integer.parseInt(matcher.group(2)); 

      } 
      else if(matcher.group(1).equalsIgnoreCase("Blue")) { 
       bot.blueScore = Integer.parseInt(matcher.group(2)); 
      } 
      cmd = "score"; 
     } 
    } 

我不知道爲什麼我不斷收到此錯誤。 正在被使用正則表達式解析的str是:

Processing: Team "Red" current score "1" with "1" players 

當我本身只運行這一部分,它工作正常。 但是當我運行整個程序時,我得到這個異常。

bot.blueScore和bot.redScore在另一個類被聲明如下:

int redScore = 0; 
int blueScore = 0; 

此外,我已經檢查matcher.group的含量(2),它從0返回一個整數,在任何地方到10. 任何想法?現在我一直在爲此掙扎數小時。

謝謝!

+2

營業時間?你沒有帶調試器的IDE嗎?在我看到實際行爲與我的期望之間的矛盾之後,我會第一次走過。 – duffymo

+1

'bot'可能爲空 –

回答

4

bot很可能是null。確保它不爲空(初始化它)

這就是說,你應該學會閱讀例外 - 這是一個非常核心的技能。 NullPointerException是最常見的異常 - 您已經確定該行,並且如果您檢查異常的文檔,您會發現它通常在引用爲null時發生,並且您試圖訪問它上的方法/字段。

2

如果您得到一個空指針異常,請在表格x.y的表格行上查找表達式,然後問自己爲什麼x爲空。在你的情況下,botmatcher必須爲空。由於您在上一行使用matcher進入該行,因此您的變量bot爲空。

+0

您也忘記了拆箱的情況。但這似乎並不適用於此。 –

+0

好點,亞歷克斯。我也忘記了數組表達式,例如'a [i]',其中a可以爲空等。:) –

相關問題