【问题标题】:Double value used as argument for the StringBuilder's deleteCharAt() method用作 StringBuilder 的 deleteCharAt() 方法的参数的双精度值
【发布时间】:2015-10-01 21:19:35
【问题描述】:

我正在准备 Oracle Associate 认证,并且正在阅读以下书籍:

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

在第77页,有一个知识测试,题目如下:

鉴于以下声明:

StringBuilder sb = new StringBuilder();

以下哪些是 sb 变量的有效用法?

一个。 sb.append(34.5);湾。 sb.deleteCharAt(34.5); C。 sb.toInteger(3); d。 sb.toString();

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

但这是书中的答案:

a、b、d 没有 StringBuilder 的 toInteger 方法。

没有其他解释。

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

279    public StringBuilder deleteCharAt(int index) {
280        super.deleteCharAt(index);
281        return this;
282    }

int 作为参数,并且该方法不会在其他任何地方重载。

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

【问题讨论】:

    标签: java stringbuilder


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      编译器说

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

      那本书的答案是错误的。

      【讨论】:

        【解决方案3】:

        老实说,这看起来像是书中的一个错误,您可能需要联系出版商。

        虽然您可以将 34.5 转换为 int,但会丢失精度,但答案 B 中不会发生这种情况。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-03
          • 1970-01-01
          • 2015-07-02
          • 1970-01-01
          相关资源
          最近更新 更多