Код ниже порождает эту ошибку, и я не уверен, почему. Очевидно, что проблема с выводом String.format в переменную str
, но я не знаю, что с ней не так.
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 name: ");
nameinit = input.nextLine();
System.out.print("Enter the donor 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();
}
}