![](/img/trans.png)
[英]Exception in thread “main” java.util.UnknownFormatConversionException: Conversion = '.'?
[英]I don't know what's wrong with one of my variable.[Exception in thread “main” java.util.UnknownFormatConversionException: Conversion = 'm']
import java.util.Scanner;
public class LABEX03
{
public static void main(String[] args)
{
System.out.println("Name LE01");
Scanner kbd = new Scanner(System.in);
double m = 3;
double n = 0;
System.out.print("type 12 and Press enter");
n = kbd.nextInt();
double p = (double)m * (double)n;
double q = 0;
q = (double)Math.sqrt(p);
System.out.printf("%m");
System.out.printf("%n");
System.out.printf("%p");
System.out.printf("%q");
}
}
调试:
名称LE01类型12并按下Enter12线程“main”中的异常java.util.UnknownFormatConversionException:java.util.Formatter中的Conversion ='m'$ FormatSpecifier.conversion(Formatter.java:2691)at java.util.Formatter $ FormatSpecifier。 (Formatter.java:2720)java.util.Formatter.parse(Formatter.java:2560)java.util.Formatter.format(Formatter.java:2501)java.io.PrintStream.format(PrintStream.java: 970)在LABEX03.main上的java.io.PrintStream.printf(PrintStream.java:871)(LABEX03.java:16)Java结果:1 BUILD SUCCESSFUL(总时间:6秒)
你误解了带有%
符号的格式字符串中应该是什么。 变量名称不以格式字符串形式出现,它们作为单独的参数传递给printf
。 格式说明符指示传入的变量的类型,例如, %d
表示整数, %f
表示浮点数, %s
表示字符串文本。
尝试例如:
System.out.printf("%f", m);
有关进一步参考,请参阅Formatter
javadocs ,它提供了有关如何格式化字符串和传入变量的更多详细信息。
您的格式声明不正确。
// Should print "q=2.0"
double q = Math.sqrt(4.0);
System.out.printf ("q=%g", q);
这是Javadoc:
http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html
您似乎对printf
的参数数量和顺序感到困惑。 我很确定你想要的东西,
System.out.printf("m = %f%n", m);
System.out.printf("n = %f%n", n);
System.out.printf("p = %f%n", p);
System.out.printf("q = %f%n", q);
当我运行你的代码(通过上面的更改)和输入12我得到
m = 3.000000
n = 12.000000
p = 36.000000
q = 6.000000
System.out.printf("m = %f", m);
System.out.printf("n = %f", n);
System.out.printf("p = %f", p);
System.out.printf("q = %f", q);
我能够将(Int)改为(双打)并将(“%m”)改为(“m =%f”,m)。 它运作良好。 感谢大家提供的有用提示
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.