charAt() 方法如何从字符串中获取数字并将它们放入 Java 中的新字符串中?

Scu*_*ton 4 java string ascii charat

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

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

SMo*_*aSA 5

尝试这个。

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

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


jam*_*mes 5

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

例如,取 char '1',然后是'4'代码中的 char

IDnum.charAt(0) + IDnum.charAt(IDnum.length() - 1)
Run Code Online (Sandbox Code Playgroud)

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

49 + 52 = 101
Run Code Online (Sandbox Code Playgroud)

这就是您的 3 位数号码的来源。

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

String.valueOf(<char>);
Run Code Online (Sandbox Code Playgroud)

或者

"" + IDnum.charAt(0) + IDnum.charAt(IDnum.length() - 1)
Run Code Online (Sandbox Code Playgroud)