2012-09-15 4 views
10

El siguiente código arroja este error, y no estoy seguro de por qué. Claramente hay un problema con la salida de String.format a la variable str, pero no sé qué le pasa.Java UnknownFormatConversionException

Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = 'i' 
    at java.util.Formatter$FormatSpecifier.conversion(Unknown Source) 
    at java.util.Formatter$FormatSpecifier.<init>(Unknown Source) 
    at java.util.Formatter.parse(Unknown Source) 
    at java.util.Formatter.format(Unknown Source) 
    at java.util.Formatter.format(Unknown Source) 
    at java.lang.String.format(Unknown Source) 
    at Donor.toString(Donor.java:41) 
    at Donor.main(Donor.java:65) 

-

import java.util.Scanner; 

public class Donor { 

    public String name; 
    public int age; 
    public double donation; 

    Donor() { 

     //Initialized to these values for debugging 
     name = "NoName"; 
     age = 0; 
     donation = 0; 

    } 

    Donor(String nameinit, int ageinit, double donationinit) { 

     name = nameinit; 
     age = ageinit; 
     donation = donationinit; 

    } 

    public String toString() { 

     String str = ""; 

     str = String.format("%s-30%i-6$%d-20", name, age, donation); 

     return str; 

    } 

    public static void main(String[] args) { 

     Scanner input = new Scanner(System.in); 
     String nameinit = null; 
     int ageinit = -1; 
     double donationinit = -1; 
     String outp = null; 

     System.out.print("Enter the donor's name: "); 
     nameinit = input.nextLine(); 

     System.out.print("Enter the donor's age: "); 
     ageinit = input.nextInt(); 

     System.out.print("Enter the donation amount: "); 
     donationinit = input.nextDouble(); 

     Donor d = new Donor(nameinit, ageinit, donationinit); 
     outp = d.toString(); 

     System.out.printf("%s30 %s6 %s10", "Name", "Age", "Donation"); 
     System.out.print("\n" + outp); 

     input.close(); 

    } 

} 

Respuesta