0

鉴于:

public class LineUp {
    public static void main(String[] args) {
        double d = 12.345;
        // insert code here
    }
}

在第 4 行插入的哪个代码片段产生输出| 12.345|

A. System.out.printf("|%7d| \n", d);
B. System.out.printf("|%7f| \n", d);
C. System.out.printf("|%3.7d| \n", d);
D. System.out.printf("|%3.7f| \n", d);
E. System.out.printf("|%7.3d| \n", d);
F. System.out.printf("|%7.3f| \n", d);
Answer: F

printf 语句的解释是什么,为什么是 |%7d| 正在给illegalFormatConversionException ?

谢谢

4

3 回答 3

5

因为 d 是双精度并且不能格式化为十进制整数。在浮点变量的情况下,您不能使用“d”格式描述符,没有显式转换以表明您知道这一事实可能的精度损失。

于 2011-05-02T17:12:32.923 回答
3

因为 %d 格式化一个整数。

从文档:

'd'     integral    The result is formatted as a decimal integer 
于 2011-05-02T17:14:47.020 回答
2

Formatter类的方法format()采用以下形式的格式字符串:

%[argument_index$][flags][width][.precision]conversion

System.out.printnf()是一种使用相同参数的便捷方法。

So%7d表示[width]7 的 a [conversion]d其中 a 用于整数类型。在此示例中,传递的值是double不能格式化为整数类型的值。

于 2011-05-02T17:15:37.687 回答