线程“main”中的异常java.util.MissingFormatArgumentException:格式说明符'10s'

时间:2013-07-26 12:22:59

标签: java string string.format

我毫无疑问错过了一些非常明显的东西,但我无法弄明白。任何帮助,将不胜感激。错误来自这里:

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 个答案:

答案 0 :(得分:29)

您的格式字符串"%-20s%10.2s%10s"有三个参数:

  1. %-20s
  2. %10.2s
  3. %10s
  4. 但只提供两个参数:

    1. this.name
    2. this.banner
    3. 错误消息指出缺少第三个参数(对于%10s)。

      因此,请调整格式字符串或添加第三个参数。

答案 1 :(得分:3)

你有:

productDetails+=String.format("%-20s%10.2s%10s",this.name,this.banner);

由于%s中有三Stringformat()预计有三个参数,但您只能传递this.namethis.banner

此外,由于您位于Student内,因此需要使用this。您可以通过namebanner简单地引用它们。

答案 2 :(得分:1)

你必须在方法format中添加一个参数,因为你的格式化字符串等待3个参数,而不是两个。

答案 3 :(得分:0)

productDetails+=String.format("%-20s%10.2s%10s",this.name,this.banner);

我认为你必须传递另一个参数,因为你只传递名称和横幅,但在字符串中你有3倍%..尝试相同只有%-20s%10.2s

相关问题