Ошибка перегрузки метода Java с двойными значениями - PullRequest
2 голосов
/ 31 декабря 2010

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

=== Перегрузка класса ===

public class Overload  
{    
    public void testOverLoadeds()  
      {  
        System.out.printf("Square of integer 7 is %d\n",square(7));  
        System.out.printf("Square of double 7.5 is %d\n",square(7.5));  
    }//..end testOverloadeds  

    public int square(int intValue)
    {


 System.out. printf("\nCalled square with int argument: %d\n",intValue);
   return intValue * intValue;
}//..end square int

public double square(double doubleValue)
        {
System.out.printf("\nCalled square with double argument: %d\n", doubleValue);
return doubleValue * doubleValue;

}//..end square double
}//..end class overload


 ===Main===
public static void main(String[] args) {

    Overload methodOverload = new Overload();
    methodOverload.testOverLoadeds(); }

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

Вызываемый квадрат с аргументом int: 7
Квадрат целого числа 7 равен 49

Исключение в потоке "main" java.util.IllegalFormatConversionException:d! = java.РаспечаткаJava: 821) в методоверсии.Overload.square (Overload.java:19) в методоверсии.Overload.testOverLoadeds (Overload.java:8) в методоверсии.Результат: 1

Что я делаю не так?

Яв Ubuntu 10.10, Netbeans 6.9.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 31 декабря 2010

Спецификатором формата для двойных значений является f, а не d. Так что эта строка должна быть:

 System.out.printf("\nCalled square with double argument: %f\n", doubleValue);

Подробнее о спецификаторах формата здесь .

0 голосов
/ 31 декабря 2010

попробуйте

   public class Overload {
    public void testOverLoadeds() {
        System.out.printf("Square of integer 7 is %d\n", square(7));
        System.out.printf("Square of double 7.5 is %.4f%n", square(7.5));
    }// ..end testOverloadeds

    public int square(int intValue) {
        System.out.printf("\nCalled square with int argument: %d\n", intValue);
        return intValue * intValue;
    }// ..end square int

    public double square(double doubleValue) {
        System.out.printf("\nCalled square with double argument: %.4f%n",doubleValue);
        return doubleValue * doubleValue;

    }// ..end square double
    // ..end class overload

    public static void main(String[] args) {

        Overload methodOverload = new Overload();
        methodOverload.testOverLoadeds();

    }
}

Вам необходимо изменить двойной форматер "% d \ n"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...