13

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

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

4 回答 4

30

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

  1. %-20s
  2. %10.2s
  3. %10s

但只提供两个参数:

  1. this.name
  2. this.banner

错误消息指出%10s缺少第三个参数 (for )。

所以要么调整你的格式字符串,要么添加第三个参数。

于 2013-07-26T12:29:09.970 回答
4

你有:

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

由于您的 , 中有三个%sString因此format()需要三个参数,但您只通过this.namethis.banner

此外,由于您在 内部Student,因此您不需要使用this. name您可以简单地通过和引用它们banner

于 2013-07-26T12:29:35.050 回答
1

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

于 2013-07-26T12:27:38.337 回答
0
productDetails+=String.format("%-20s%10.2s%10s",this.name,this.banner);

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

于 2013-07-26T12:29:15.547 回答