【问题标题】:How does the charAt() method work with taking numbers from strings and putting them into new strings in Java?charAt() 方法如何从字符串中获取数字并将它们放入 Java 中的新字符串中?
【发布时间】:2020-07-30 19:06:57
【问题描述】:
public String getIDdigits()
    {
        String idDigits = IDnum.charAt(0) + IDnum.charAt(IDnum.length() - 1) + "";
        return idDigits;
    }

在这个简单的方法中,IDnum 是一个由数字组成的 13 位字符串并且是一个类变量,给定的输出绝不是我所期望的。对于 1234567891234 这样的 ID 号,我希望在输出中看到 14,但输出始终是 101 等三位数字。无论我使用什么 ID 号,它始终是一个以 10 开头的 3 位数字. 我认为使用空引号可以避免取 Ascii 值的问题,但我似乎仍然会出错。请问有人能解释一下 charAt() 在这个意义上是如何工作的吗?

【问题讨论】:

    标签: java string ascii charat


    【解决方案1】:

    您从String 中获取char 类型,然后使用+ 运算符,在这种情况下,其行为是将ASCII 数值相加。

    例如,在您的代码中获取字符'1',然后是字符'4'

    IDnum.charAt(0) + IDnum.charAt(IDnum.length() - 1)
    

    编译器将其解释为其 ASCII 十进制等价物并添加它们

    49 + 52 = 101
    

    这就是你的 3 位数的来源。

    在连接它们之前将它们转换回字符串来消除这种情况......

    String.valueOf(<char>);
    

    "" + IDnum.charAt(0) + IDnum.charAt(IDnum.length() - 1)
    

    【讨论】:

      【解决方案2】:

      试试这个。

      public String getIDdigits()
          {
              String idDigits = "" + IDnum.charAt(0) + IDnum.charAt(IDnum.length() - 1);
              return idDigits;
          }
      

      当你第一次添加一个空时,它会添加char,比如String,如果你把它放在最后,它首先添加数字模式(ASCII),然后转换会将其转换为String

      【讨论】:

        【解决方案3】:

        您必须更明确地了解字符串连接,因此像这样解决您的语句:

        String idDigits = "" + IDnum.charAt(0) + IDnum.charAt(IDnum.length() - 1);
        

        添加 Java chars、shorts 或 bytes 的结果是一个 int:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-03-29
          • 1970-01-01
          • 2018-09-02
          • 2018-12-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多