java - String.format("%.1g", 0.0f) 导致索引异常,是bug吗?
问题描述
下面的 Java 代码崩溃。我的 jdk 版本是 1.7.0_51。它是一个错误吗?
package testJava;
public class Test2 {
public static void main(String[] args) {
String.format("%.1g", 0.0f);
}
}
调用堆栈:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
at java.util.Formatter$FormatSpecifier.addZeros(Unknown Source)
at java.util.Formatter$FormatSpecifier.print(Unknown Source)
at java.util.Formatter$FormatSpecifier.print(Unknown Source)
at java.util.Formatter$FormatSpecifier.print(Unknown Source)
at java.util.Formatter$FormatSpecifier.printFloat(Unknown Source)
at java.util.Formatter$FormatSpecifier.print(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.lang.String.format(Unknown Source)
at testJava.Test2.main(Test2.java:6)
解决方案
这是 JDK 中的一个错误,现已修复。
https://bugs.java.com/bugdatabase/view_bug.do?bug_id=7088271
“这两种情况下的问题都是由于当要格式化的值为零时指定的精度为 0 或 1,从而导致 Formatter.addZeros() 中出现 AIOOBE。”
推荐阅读
- airflow - CLI 中的 Airflow Subdag 任务回填正在创建新任务,而不是重新运行失败的任务,并且仅运行 1 天而不是范围
- wso2 - WSO2,XML 到 JSON,强制将单个元素视为数组
- windows - 使用 icacls 为驱动器上的所有 app_data 文件夹设置正确的权限
- javascript - 禁用暂停和寻找视频 - jwplayer 8.21
- asp.net - IIS 慢速多线程
- reactjs - 需要用 jest 为使用 okta 的反应应用程序编写单元测试,但收到警告
- php - 如何在以下代码中使用 PHP 调整图像大小?
- html - Html链接不可点击
- python - 无法从python中的核心导入请求者
- ssl - 在 Raspberry Pi 上使用 lighttpd 激活 SSL