我不知道我的一个变量有啥问题。[线程“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 有啥区别? [复制]

Java中main()方法和主线程有啥关系?

有啥方法可以区分主线程和它产生的任何线程吗?

我不知道如何从字符串、整数或变量中创建一个特定的数组

知道ThreadLocal吗?一起聊聊到底有啥用

“阻塞”主线程(dispatch_get_main_queue())和(或不)定期运行 currentRunLoop - 有啥区别?