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

How does the charAt() method work with taking numbers from strings and putting them into new strings in Java?

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

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

你必须更明确地说明字符串连接,所以像这样解决你的语句:

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

添加 Java 个字符、短裤或字节的结果是一个整数:

试试这个。

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

当你第一次添加一个空的时候,它会添加 char 就像 String 如果你把它放在最后它首先添加数字模式(ASCII)然后转换将把它转换成 String.

您正在从 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)