Java 是否可以在同一printf语句中使用打印字符串和双精度格式?非法格式转换异常

Java 是否可以在同一printf语句中使用打印字符串和双精度格式?非法格式转换异常,java,printf,Java,Printf,我想打印一个带有格式双精度的句子,而不必使用几个打印语句。以下是我试图表达的几个观点: System.out.printf("( %.2f", real + ", %.2f", imaginary + ")"); System.out.printf("(" + "%.2f",real + ", " + "%.2f",imaginary + ")"); 然而,这是我得到的错误 java.util.IllegalFormatConversionException: f != java.

我想打印一个带有格式双精度的句子,而不必使用几个打印语句。以下是我试图表达的几个观点:

  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语句吗?或者我想做的是不可能的?谢谢

在格式字符串的构造中不要混入变量。您应该创建格式字符串作为第一个参数,然后传入所有变量。传入的变量数量必须与格式字符串中的占位符数量匹配,并且必须与占位符指定的格式匹配

尝试:

//
System.out.printf((.2f,%.2f)”,实部,虚部);
//                                 ... 后面的变量在这里
这与匹配,它首先采用
字符串
格式,然后是任意数量的
对象
变量参数

//                <- format    ->
System.out.printf("( %.2f, %.2f)", real, imaginary);
//                                 ... variables afterwards here