Исключение в потоке "main" java.util.MissingFormatArgumentException: спецификатор формата "10s"
Я, без сомнения, пропущу что-то действительно очевидное здесь, но я не могу понять это. Любая помощь будет оценена по достоинству. Ошибка исходит отсюда:
package B00166353_Grades;
public class Student{
String name,banner;
public Student(String name,String banner){
this.name=name;
this.banner=banner;
}
public String toString(){
String productDetails=new String();
productDetails+=String.format("%-20s%10.2s%10s",this.name,this.banner);
return productDetails;
}
}
Ответы
Ответ 1
Строка формата "%-20s%10.2s%10s"
принимает три параметра:
но поставляются только два параметра:
В сообщении об ошибке указано, что отсутствует третий параметр (для %10s
).
Итак, либо отрегулируйте строку формата, либо добавьте третий параметр.
Ответ 2
У вас есть:
productDetails+=String.format("%-20s%10.2s%10s",this.name,this.banner);
Поскольку у вас есть три %s
в String
, format()
ожидает три параметра, но вы пропускаете только this.name
и this.banner
.
Кроме того, поскольку вы находитесь внутри Student
, вам нужно не использовать this
. Вы можете просто ссылаться на них на name
и banner
.
Ответ 3
Вам нужно добавить аргумент к методу format
, потому что ваша форматированная строка ожидает 3 аргумента, а не два.
Ответ 4
productDetails+=String.format("%-20s%10.2s%10s",this.name,this.banner);
Я думаю, что вы должны передать другой аргумент, потому что вы передаете только имя и баннер, но в строке у вас есть 3 раза%. Попробуйте то же самое только с% -20s% 10.2s