2011-07-09 24 views
1

當我運行此代碼時,將字符串轉換爲int將打印出NULL?當我打印出字符串時,它給了我一個字符串數字,但是當我嘗試將該字符串轉換爲一個int時,它說null,爲什麼?字符串爲int給出nullpointerexception

for(int j = 0; j < removetrack.size(); j++){ 
    String removetrackArray[] = removetrack.get(j).split(" "); 
    String candidateBefore = ""; 
    int removetracklocation = Arrays.asList(removetrackArray).indexOf(past)-1; 

    if(removetracklocation != 1) { 
     String candidateBefore = ""; 
     System.out.println(removetrack.get(j)+" location = "+ removetracklocation +" "+ 
     (past)+" candidate name "+dictionary.get(votedfor)); 
     candidateBefore= Arrays.asList(removetrackArray).get(removetracklocation+1); 
     System.out.println(" this is a string "+candidateBefore); 
     System.out.println(Integer.getInteger(candidateBefore));       
    }  
} 

回答

2

Javadoc救援:

確定具有指定 名 系統屬性的整數值。

使用Integer.parseInt字符串轉換成int和Integer.valueOf字符串轉換爲整數。

+0

呸。打字+1比我快。 :) – razlebe

0

從文檔爲Integer.getInteger

確定具有指定名稱的系統屬性的整數值。 第一個參數被視爲系統屬性的名稱。系統屬性可以通過System.getProperty(java.lang.String)方法訪問。然後將該屬性的字符串值解釋爲整數值,並返回表示此值的Integer對象。可能的數字格式的詳細信息可以在getProperty的定義中找到。

如果沒有指定名稱的屬性,如果指定的名稱爲空或爲空,或者屬性的數字格式不正確,則返回null。

換句話說,它不是解析一個整數。要解析整數,請使用Integer.parseInt(以獲得int)或Integer.valueOf(獲得Integer)。

但是,即使您的描述有點奇怪 - 您在標題中聲稱它會給您一個NullPointerException,但您會說它正在打印null。這是什麼?他們非常不同。我無法看到你給我們的代碼如何將NullPointerException置於Integer.getInteger

或者,如果這是用戶輸入的值,則可能需要使用java.text.NumberFormat

0

Integer.getInteger()用於系統屬性:

Integer.getInteger("sun.arch.data.model");