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: