Исключение в потоке" main " java.утиль.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;
}
}
4 ответов
формат строки "%-20s%10.2s%10s"
принимает три параметра:
%-20s
%10.2s
%10s
но только двух параметров:
this.name
this.banner
в сообщении об ошибке указано, что третий параметр (для %10s
) отсутствует.
поэтому либо настройте строку формата, либо добавьте третий параметр.
у вас есть:
productDetails+=String.format("%-20s%10.2s%10s",this.name,this.banner);
так как у вас есть три %s
в своем String
, format()
ожидает три paramteres, но вы проходите только this.name
и this.banner
.
кроме того, так как вы находитесь внутри Student
, ты не нужно использовать this
. Вы можете просто ссылаться на них name
и banner
.
вы должны добавить аргумент в метод format
, потому что ваша отформатированная строка ожидает 3 аргумента, а не два.
productDetails+=String.format("%-20s%10.2s%10s",this.name,this.banner);
Я думаю, что вы должны передать другой аргумент, потому что вы передаете только имя и баннер, но в строке у вас есть 3 раза %.. попробуйте то же самое только с %-20s%10.2 s