在Java中,charAt()方法如何与从字符串中取出数字并将其放入新字符串一起使用?

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

在这个简单的方法中,IDnum是由数字组成的13位字符串,是一个类变量。然而,无论使用什么ID号码,输出始终是以10开头的三位数,例如101,而不是我期望的14。即使我认为使用空引号可以避免获取Ascii值的问题,但似乎仍然有些问题。请问有人能解释一下charAt()在这种情况下如何工作吗?
3个回答

5

试一下这个。

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

当您首次添加空时,它会像String一样添加char。如果您将其放在结尾,则它会首先以数字模式(ASCII)添加,然后转换为String


5
你正在从一个字符串中提取char类型,然后使用"+"运算符。在这种情况下,运算符会将ASCII数值相加。
例如,在你的代码中提取char '1',然后提取char '4'。
IDnum.charAt(0) + IDnum.charAt(IDnum.length() - 1)

编译器将其解释为ASCII十进制值并将其相加。
49 + 52 = 101

这就是你的三位数字的来源。

在拼接它们之前将它们转换回字符串可以消除这个问题...

String.valueOf(<char>);

或者

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

3
您需要更明确字符串连接的方式,可以按照以下方式解决您的语句:
String idDigits = "" + IDnum.charAt(0) + IDnum.charAt(IDnum.length() - 1);

将Java中的char、short或byte相加的结果是一个int:

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接