第六题(格式化)

运行时抛出异常

Exception in thread "main" java.util.IllegalFormatConversionException: d != java.lang.Double at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4045) at java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2748) at java.util.Formatter$FormatSpecifier.print(Formatter.java:2702) at java.util.Formatter.format(Formatter.java:2488) at java.io.PrintStream.format(PrintStream.java:970) at Test.main(Test.java:17)

我以为会自动截取成为int型

刨根问底下

Java 语言的格式化输出在很大程度上受到 C 语言 printf 的启发。虽然一些格式字符串与 C 类似,但已进行了某些定制,以适应 Java 语言,,并且利用了其中一些特性。此外,Java 的格式比 C 的格式更严格;例如,如果转换与标志不兼容,则会抛出异常。

public PrintStream format(Stringformat,Object…args)使用指定格式字符串和参数将格式化字符串写入此输出流中。参数:format – 在中描述的格式字符串args – 格式字符串中的格式说明符引用的参数。如果参数多于格式说明符,则忽略额外的参数。参数的数量是可变的,并且可以为零。参数的最大数量受到Java Virtual Machine Specification 定义的 Java 数组的最大维数的限制。针对 null 参数的行为依赖于conversion。返回:此输出流抛出:IllegalFormatException – 如果格式字符串包含非法语法、与给定参数不兼容的格式说明符、对给定格式字符串而言不够充足的参数或其他非法条件。有关所有可能的格式错误的规范,请参阅 formatter 类规范的部分。NullPointerException – 如果format 为 null总之,一句话,java的printf和format不会自动转换成所需要的类型,除非类型是兼容的

没有什么可留恋,只有抑制不住的梦想,

第六题(格式化)

相关文章:

你感兴趣的文章:

标签云: