在Java中,charAt()方法如何从字符串中提取数字并将其放入新字符串中


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

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

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

试试这个。

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

当你第一次添加一个空时,它会像String一样添加char。如果你把它放在最后,它会先在数字模式(ASCII(中添加,然后转换。它会把它转换成String

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

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

添加Java字符、短字符或字节的结果是int:

最新更新