第六题(格式化)

执行时抛出异常

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(String format,
                          Object... args)
使用指定格式字符串和參数将格式化字符串写入此输出流中。

參数:
format - 在 格式字符串的语法中描写叙述的格式字符串
args - 格式字符串中的格式说明符引用的參数。假设 參数多于格式说明符,则忽略额外的參数。參数的数量是可变的,而且能够为零。參数的最大数量受到 Java Virtual Machine Specification 定义的 Java 数组的最大维数的限制。

针对 null 參数的行为依赖于 conversion

返回:
此输出流
抛出:
IllegalFormatException - 假设格式字符串包括非法语法、 与给定參数不兼容的格式说明符、对给定格式字符串而言不够充足的參数或其它非法条件。有关全部可能的格式错误的规范,请參阅 formatter 类规范的 具体信息部分。
NullPointerException - 假设 formatnull
总之,一句话,java的printf和format不会自己主动转换成所须要的类型。除非类型是兼容的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值