Исключение в потоке main java.util.IllegalFormatPrecisionException: 2, пытался исправить форматирование, но не сработало jGRASP

Я пытаюсь сделать программу, которая усредняет два числа.

public class Average
{
   private double one, two, average;
   public void setNums(double num1, double num2)
    {
      one=num1;
      two=num2;
    }

    public void average( )
    {
      average = (one + two) / 2;

    }
    public void print()
    {
      System.out.print( one+" + "+two +"has an average of ");
      System.out.printf("%.2d\n",average);
    }
}

Вылезает вот такая ошибка, думаю из-за форматирования.

Исключение в основном потоке java.util.IllegalFormatPrecisionException: 2 в java.base/java.util.Formatter$FormatSpecifier.checkInteger(Formatter.java:3138) в java.base/java.util.Formatter$FormatSpecifier.(Formatter.java: 2874) в java.base/java.util.Formatter.parse(Formatter.java:2713) в java.base/java.util.Formatter.format(Formatter.java:2655) в java.base/java.io.PrintStream .format(PrintStream.java:1209) в java.base/java.io.PrintStream.printf(PrintStream.java:1105) в Average.print(Average.java:26) в AverageRunner.main(AverageRunner.java:17) ----jGRASP клин2: код выхода для процесса равен 1. ----jGRASP: операция завершена.

Помогите пожалуйста.

Кроме того, он отлично компилируется, но внутри основного метода он не запускается.


person SEICHRO    schedule 23.11.2020    source источник


Ответы (1)


Проблема в этой строке:

  System.out.printf("%.2d\n",average);

%.2d\n — это строка неправильного формата для double. Замените его на %.2f\n

person NickMarkoAu    schedule 23.11.2020
comment
Спасибо! Вы были правы, не могу проголосовать из-за представителя D: - person SEICHRO; 30.11.2020
comment
Очень рад, что смог помочь! Вы должны иметь возможность принять ответ, даже если вы не можете проголосовать. Удачного кодирования! - person NickMarkoAu; 01.12.2020