2013-07-26 8 views
11

Mi manca senza dubbio qualcosa di molto ovvio ma non riesco a capirlo. Qualsiasi aiuto sarebbe apprezzato. L'errore viene da qui:Eccezione nel thread "main" java.util.MissingFormatArgumentException: specificatore di formato '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

Errore altrove. dov'è il tuo metodo principale? –

+1

No, è proprio lì in 'toString()'. Sono passati solo due parametri ... –

risposta

28

tua stringa di formato "%-20s%10.2s%10s" prende tre parametri:

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

ma fornire solo due parametri:

  1. this.name
  2. this.banner

Il messaggio di errore indica che il terzo parametro (per %10s) è mancante.

Quindi, regola la stringa di formato o aggiungi il terzo parametro.

1

È necessario aggiungere un argomento al metodo format, perché la vostra stringa formattata attende per 3 argomenti, non due.

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

penso che si deve passare un altro argomento, perché si passa solo il nome e la bandiera, ma nella stringa si hanno 3 volte% .. provare lo stesso con solo% -20s% 10.2s

3

È avere:

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

Dal momento che hai tre %s nel vostro String, format() aspetta tre paramteres, ma si passa solo this.name e this.banner.

Inoltre, dal momento che ci si trova all'interno di Student, fate non necessità di utilizzare this. Puoi semplicemente fare riferimento a loro tramite name e banner.

Problemi correlati