2013-07-26 10 views
11

Ich bin zweifellos etwas wirklich offensichtlich fehlt hier fehlt, aber ich kann es nicht herausfinden. Jede Hilfe wäre willkommen. Der Fehler kommt von hier:Ausnahme im Thread "Haupt" java.util.MissingFormatArgumentException: Format-Spezifizierer '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

Fehler ist einige wo sonst. Wo ist deine Hauptmethode? –

+1

Nein, es ist genau dort in 'toString()'. Nur zwei Parameter werden übergeben ... –

Antwort

28

Ihr Format-String "%-20s%10.2s%10s" nimmt drei Parameter:

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

aber nur zwei Parameter liefern:

  1. this.name
  2. this.banner

Die Fehlermeldung besagt, dass der dritte Parameter (%10s) fehlt.

Passen Sie entweder Ihre Formatzeichenfolge an oder fügen Sie den dritten Parameter hinzu.

1

Sie haben ein Argument an die Methode format, hinzuzufügen, da die formatierten String für drei Argumente erwartet, nicht zwei.

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

Ich denke, dass Sie ein anderes Argument übergeben müssen, weil Sie nur Namen und Banner passieren, aber in der Zeichenfolge haben Sie 3 mal% .. versuchen, das gleiche mit nur% -20s% 10.2s

3

Sie haben:

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

Da Sie haben drei %s in Ihrem String, format() drei paramteres erwartet, aber Sie nur this.name und this.banner passieren.

Auch da Sie innerhalb von Student sind, dann tun Sie nicht Notwendigkeit this zu verwenden. Sie können sie einfach durch name und banner referenzieren.

Verwandte Themen