2011-08-09 88 views
1

爲什麼,當我使用parseInt函數此:的Java parseInt函數()問題

private String certainNumber; 

public int getNumber() 
{ 
    return Integer.parseInt(certainNumber); 
} 

它編譯。

但如果我這樣做:

public String getStreetNumber() 
{ 
    return streetNumber; 
} 

和parseInt函數返回值,像這樣:

@Override 
public int compareTo(Object o) 
{ 
    Address tempAddress = (Address)o; 
    if(Integer.parseInt(getStreetNumber()) < tempAddress.Integer.parseInt(getStreetNumber())) 
    { 
     return -1; 
    } 
... // etc. 
} 

它不編譯?

編輯:嘗試過的建議...仍然沒有編譯?

edit2:謝謝你的幫助!

+3

東陽你直接調用parseInt函數,您必須使用的Integer.parseInt(),因爲它另一個類返回一個字符串它是Integer類的一個靜態方法 – doNotCheckMyBlog

+0

什麼是Address?它有一個方法parseInt()? –

+0

如果你想,你可以靜態導入'parseInt'方法。 – Hugh

回答

3

因爲你叫parseInt()Integer.parseInt()

0

if(Integer.parseInt(getStreetNumber())

4

這是因爲parseInt是屬於Integer類中的方法:你必須調用它Integer.parseInt(value);。我非常懷疑你的自定義類(我懷疑這是Address類的所有部分?)還是tempAddress實例中都有parseInt函數。

試試這個:

public int compareTo(Object o) 
{ 
    Address tempAddress = (Address)o; 
    if(Integer.parseInt(getStreetNumber()) < 
      // you need to parse the return value of tempAddress's getStreetNumber() 
      // not get the tempAddress's parseInt of this.getStreetNumber() 
      Integer.parseInt(tempAddress.getStreetNumber())) 
    { 
     return -1; 
    } 
// etc... 
} 
0

你怎麼能叫上一個地址參考parseInt函數???

  • >如果(parseInt函數(getStreetNumber())< tempAddress.parseInt(getStreetNumber()))

你也應該經常說的Integer.parseInt(),你不能直接調用parseInt函數。

0

是的,你也可以靜態導入:

import static java.lang.Integer.parseInt; 
1

人回答您的問題直接,但讓我說,這是做你正在試圖做同樣的事情的一個非常乾淨的方式:

return Integer.valueOf(getStreetNumber()) 
    .compareTo(
     Integer.valueOf(tempAddress.getStreetNumber())); 

Integer已經實現了Comparable,所以你不妨利用它。

2

parseIntInteger類中的靜態方法。你把它作爲 Integer.parseInt(the_string_you_want_to_parse)

如果你想通過解析的方法在你怎麼稱呼它爲 Integer.parseInt(tempAddress.getStreetNumber())