我想打印带有格式化双精度的句子,而不必使用多个打印语句。这些是我试图运行的一些陈述:
System.out.printf("( %.2f", real + ", %.2f", imaginary + ")");
System.out.printf("(" + "%.2f",real + ", " + "%.2f",imaginary + ")");
然而,这是我得到的错误
java.util.IllegalFormatConversionException: f != java.lang.String
at java.util.Formatter$FormatSpecifier.failConversion(Unknown Source)
at java.util.Formatter$FormatSpecifier.printFloat(Unknown Source)
at java.util.Formatter$FormatSpecifier.print(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.io.PrintStream.format(Unknown Source)
at java.io.PrintStream.printf(Unknown Source)
at ComplexNumber.print(ComplexNumber.java:17)
at ComplexClient.main(ComplexClient.java:10)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)
我只是错误地使用了printf语句吗?或者是我试图做不到的事情?感谢
答案 0 :(得分:0)
您不要在格式字符串构造中混合变量。您应该将格式字符串创建为第一个参数,之后传入所有变量。传入的变量数必须与格式字符串中的占位符数相匹配,并且它们必须与占位符指定的格式匹配。
尝试:
// <- format ->
System.out.printf("( %.2f, %.2f)", real, imaginary);
// ... variables afterwards here
这与printf
method signature匹配,Book on Google首先采用格式String
,后跟任意数量的Object
变量参数。