繁体   English   中英

我不知道我的一个变量有什么问题。[线程“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']

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM