Java parseInt () вопрос - PullRequest
       18

Java parseInt () вопрос

1 голос
/ 09 августа 2011

Почему, когда я использую 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.
}

Не компилируется?

edit: пробовал предложения ... все еще не компилируется?

edit2: Спасибо запомогите ребята!

Ответы [ 7 ]

4 голосов
/ 09 августа 2011

Это потому, что 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...
}
3 голосов
/ 09 августа 2011

Потому что вы позвонили parseInt() не Integer.parseInt()

2 голосов
/ 09 августа 2011

parseInt - статический метод в классе Integer. Вы называете это как Integer.parseInt(the_string_you_want_to_parse)

Если вы хотите проанализировать строку, возвращенную методом в другом классе, вы вызываете ее как Integer.parseInt(tempAddress.getStreetNumber())

1 голос
/ 09 августа 2011

Другие ответили на ваш прямой вопрос, но позвольте мне сказать, что это очень чистый способ сделать то же самое, что вы пытаетесь сделать:

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

Integer уже реализует Comparable,так что вы можете использовать его.

0 голосов
/ 09 августа 2011

Да, вы также можете статически импортировать его:

import static java.lang.Integer.parseInt;
0 голосов
/ 09 августа 2011

Как вы можете вызвать parseInt для адреса Address ???

  • > if (parseInt (getStreetNumber ())

Также вы всегда должны говорить Integer.parseInt (), вы не можете вызвать parseInt напрямую.

0 голосов
/ 09 августа 2011

if(Integer.parseInt(getStreetNumber())

...