2013-07-26 62 views
11

我毫無疑問錯過了一些非常明顯的東西,但我無法弄清楚。任何幫助,將不勝感激。該錯誤是從這裏來的:線程「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; 
    } 
} 
+0

錯誤是一些其他地方。你的主要方法在哪裏? –

+1

不,它正好在'toString()'中。只有兩個參數傳遞... –

回答

28

你的格式字符串"%-20s%10.2s%10s"有三個參數:

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

但只提供兩個參數:

  1. this.name
  2. this.banner

的錯誤消息指出(對於%10s)第三個參數丟失。

所以要麼調整你的格式字符串或添加第三個參數。

1

你有一個參數添加到方法format,因爲你的格式化字符串爲等待3個參數,而不是兩個。

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

我認爲你必須通過另一種說法,是因爲你只傳遞名稱和旗幟,但在字符串中你有3次%..嘗試同一只%-20s%10.2s

3

你有:

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

既然你有三個%sStringformat()需要三個paramteres,但只通過this.namethis.banner

此外,由於你的Student裏面,你做不需要使用this。你可以簡單地通過namebanner來引用它們。

相關問題