1

为什么当我为此使用 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.
}

它不编译?

编辑:尝试了建议......仍然没有编译?

编辑2:感谢您的帮助!

4

7 回答 7

4

那是因为parseInt是属于Integer该类的方法:您必须调用它Integer.parseInt(value);。我非常怀疑您的自定义类中是否有 parseInt 函数(我怀疑这都是 Address 类的一部分?)或 tempAddress 实例。

尝试这个:

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...
}
于 2011-08-09T05:36:43.373 回答
3

parseInt()因为你没有打电话Integer.parseInt()

于 2011-08-09T05:35:18.523 回答
2

parseIntInteger类中的静态方法。你称之为 Integer.parseInt(the_string_you_want_to_parse)

如果要解析由另一个类中的方法返回的字符串,则将其称为 Integer.parseInt(tempAddress.getStreetNumber())

于 2011-08-09T05:40:40.687 回答
1

其他人回答了您的直接问题,但让我说这是一种非常干净的方式来做同样的事情:

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

Integer已经实现了Comparable,所以你不妨利用它。

于 2011-08-09T05:40:31.187 回答
0

if(Integer.parseInt(getStreetNumber())

于 2011-08-09T05:36:05.710 回答
0

你怎么能在地址引用上调用 parseInt ???

  • > if(parseInt(getStreetNumber()) < tempAddress.parseInt(getStreetNumber()))

你也应该总是说 Integer.parseInt(),你不能直接调用 parseInt。

于 2011-08-09T05:36:57.647 回答
0

是的,您也可以静态导入它:

import static java.lang.Integer.parseInt;
于 2011-08-09T05:38:49.817 回答