java - 我究竟做错了什么? Java 非法格式转换异常

标签 java

我有一些计算圆属性的代码:

package circleinfo;

import java.util.Scanner;

public class Circleinfo {

    public static void main(String[] args) {

        Scanner input=new Scanner(System.in);
        int r;

        System.out.print("Enter the radius of the circle to find circumference, diameter, and area\n");

        r = input.nextInt();

        System.out.printf("The circumference is %f\n",(2*r*Math.PI));
        System.out.printf("The diameter is %f\n",(r*2));
        System.out.printf("The area is %f\n",(r*r*Math.PI));

    }
}

它计算周长,但不计算其余部分。

Enter the radius of the circle to find circumference, diameter, and area

10

The circumference is 62.831853

Exception in thread "main" java.util.IllegalFormatConversionException: f != java.lang.Integer
    at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4045)
    at java.util.Formatter$FormatSpecifier.printFloat(Formatter.java:2761)
    at java.util.Formatter$FormatSpecifier.print(Formatter.java:2708)
    at java.util.Formatter.format(Formatter.java:2488)
    at java.io.PrintStream.format(PrintStream.java:970)
    at java.io.PrintStream.printf(PrintStream.java:871)
    at circleinfo.Circleinfo.main(Circleinfo.java:30)
The diameter is Java Result: 1

最佳答案

r 是一个 int,所以 r*2 也是一个 int,这意味着在你的第二个无法使用打印语句 %f。在那里尝试 %d

回想一下,%f 用于 float ,而 %d 用于整数。 Formatter 的文档中对此进行了概述。 (参见 Format String Syntax)。

关于java - 我究竟做错了什么? Java 非法格式转换异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18542515/

相关文章:

java - 如何在 Android 中禁用触摸监听器一段时间

java - Android - 带倒计时的定时游戏,可使用剩余时间更新 UI,同时用户仍然可以与 UI 交互

java - ResultSet 关闭后不允许操作

java - 在 Java 中将 char[] 转换为 BLOB

java - 如何在不使用 Linux 命令行中的 Maven/Ant 的情况下为 Jenkins 生成coverage.xml?

java - 链表或递归调用 HashMap

java - 在spring中获取工厂类的servletcontext

java - 从 JavaScript 向 Java 发送 JSON 时出错

java - Java 中的 SparkContext 并行化调用示例

java - 如何编写java程序只打印字符串中的重复字符?