我不知道我的一个变量有啥问题。[线程“main”java.util.UnknownFormatConversionException 中的异常:Conversion = 'm']
Posted
技术标签:
【中文标题】我不知道我的一个变量有啥问题。[线程“main”java.util.UnknownFormatConversionException 中的异常:Conversion = \'m\']【英文标题】:I don't know what's wrong with one of my variable.[Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = 'm']我不知道我的一个变量有什么问题。[线程“main”java.util.UnknownFormatConversionException 中的异常:Conversion = 'm'] 【发布时间】:2014-09-10 16:24:50 【问题描述】: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 线程“主”java.util.UnknownFormatConversionException 中的异常:Conversion = 'm' 在 java.util.Formatter$FormatSpecifier.conversion(Formatter.java:2691) 在 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) 在 java.io.PrintStream.printf(PrintStream.java:871) 在 LABEX03.main(LABEX03.java:16) Java 结果:1 构建成功(总时间:6 秒)
【问题讨论】:
你为什么要做 n = kbd.nextInt()?你不应该做 kbd.nextDouble() 吗? 【参考方案1】:您误解了带有%
符号的格式字符串中的内容。变量名不在格式字符串中,它们作为单独的参数传递给printf
。格式说明符表示传入的变量的类型,例如%d
用于整数,%f
用于浮点数,%s
用于字符串文本。
试试例如:
System.out.printf("%f", m);
如需进一步参考,请参阅Formatter
javadocs,其中提供了有关如何格式化字符串和传递变量的更多详细信息。
【讨论】:
【参考方案2】:您的格式陈述不正确。
// 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
【讨论】:
【参考方案3】:您似乎对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
【讨论】:
【参考方案4】: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) 更改为 (Doubles) 并将 ("%m") 更改为 ("m = %f", m)。 它运作良好。感谢大家提供有用的提示
【讨论】:
以上是关于我不知道我的一个变量有啥问题。[线程“main”java.util.UnknownFormatConversionException 中的异常:Conversion = 'm']的主要内容,如果未能解决你的问题,请参考以下文章
main.storyboard 和 launchscreen.storyboard 有啥区别? [复制]
“阻塞”主线程(dispatch_get_main_queue())和(或不)定期运行 currentRunLoop - 有啥区别?