web-dev-qa-db-fra.com

Exception dans le fil "principal" Java.util.MissingFormatArgumentException: spécificateur de format '10s'

Il ne fait aucun doute que je manque quelque chose de vraiment évident ici mais je n'arrive pas à le comprendre. Toute aide serait appréciée. L'erreur vient d'ici:

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;
    }
}
11
user2343208

Votre chaîne de format "%-20s%10.2s%10s" prend trois paramètres:

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

mais ne fournissent que deux paramètres:

  1. this.name
  2. this.banner

Le message d'erreur indique que le troisième paramètre (pour %10s) est manquant.

Donc, ajustez votre chaîne de format ou ajoutez le troisième paramètre.

29
Uwe Plonus

Tu as:

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

Puisque vous avez trois %s dans votre String, format() s'attend à trois paramètres, mais vous ne transmettez que this.name et this.banner.

De plus, puisque vous êtes à l’intérieur de Student, vous devez pas utiliser this. Vous pouvez simplement les référencer par name et banner.

3
Steve P.

Vous devez ajouter un argument à la méthode format, car votre chaîne formatée attend 3 arguments et non deux.

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

Je pense que vous devez passer un autre argument, car vous ne passez que le nom et la bannière mais dans la chaîne vous avez 3 fois% .. essayez la même chose avec% -20s% 10.2s

0
Deckard27