下面的代码抛出了这个错误,我不知道为什么。很明显,将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'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();
}
}
2条答案
按热度按时间kx1ctssn1#
在以下行中,使用
d
代替i
作为int
,使用f
代替double
作为d
您可以在这里阅读有关格式化语法http://docs.oracle.com/javase/6/docs/api/java/util/Formatter.html。
k97glaaz2#
在我的例子中,由于对齐,在$和s(%1:$ s)之间添加了空格。拆除空间工程
之前
之后