Java 双值用作StringBuilder的参数';s deleteCharAt()方法

Java 双值用作StringBuilder的参数';s deleteCharAt()方法,java,stringbuilder,Java,Stringbuilder,我正在准备Oracle员工认证,正在阅读以下书籍: Oracle认证助理,Java SE7程序员学习指南 在第77页,有一个知识测试,有以下问题: 鉴于以下声明: StringBuilder sb=新的StringBuilder() 以下哪项是sb变量的有效使用 a。sb.追加(34.5);Bsb.deleteCharAt(34.5);C某人(3);D 某人扭动弹簧() 我认为正确的答案是a&d 但这本书给出了答案: a、 b和d没有StringBuilder-toInteger方法 没有其他解

我正在准备Oracle员工认证,正在阅读以下书籍:

Oracle认证助理,Java SE7程序员学习指南

在第77页,有一个知识测试,有以下问题:

鉴于以下声明:

StringBuilder sb=新的StringBuilder()

以下哪项是sb变量的有效使用

a。sb.追加(34.5);Bsb.deleteCharAt(34.5);C某人(3);D 某人扭动弹簧()

我认为正确的答案是a&d

但这本书给出了答案:

a、 b和d没有StringBuilder-toInteger方法

没有其他解释

所以,我去检查了源代码,这里是:

279    public StringBuilder deleteCharAt(int index) {
280        super.deleteCharAt(index);
281        return this;
282    }
int
作为参数,该方法不会在其他任何地方重载


你知道书中对这个“更正”的解释吗?

对于上面给出的例子
sb.deleteCharAt(34.5)

编译器说

类型StringBuilder中的方法deleteCharAt(int)不可用 适用于参数(双精度)


那么这本书的答案是错误的。

这是书中的错误。你的答案是正确的,应该是a&d。这里有一个链接, 并找到以下勘误表标题(大约在页面中间):
勘误表类型:技术|页码:297 |勘误表日期:2013年2月5日

老实说,这本书似乎有错误,您可能需要联系出版商

虽然可以将34.5转换为整数,但会失去精度,但答案B中不会出现这种情况