Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
charAt()方法如何从字符串中提取数字并将其放入Java中的新字符串中?_Java_String_Ascii_Charat - Fatal编程技术网

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

charAt()方法如何从字符串中提取数字并将其放入Java中的新字符串中?,java,string,ascii,charat,Java,String,Ascii,Charat,在这个简单的方法中,IDnum是一个由数字组成的13位字符串,是一个类变量,给定的输出永远不是我所期望的。对于像1234567891234这样的ID号,我希望在输出中看到14,但是输出总是一个三位数的数字,比如101。无论我使用什么身份证号码,它都是一个以10开头的3位数字。我认为使用空引号可以避免使用Ascii值的问题,但我似乎仍然出错。有人能解释一下charAt()在这个意义上是如何工作的吗?您必须更明确地说明字符串连接,因此请像这样解决您的语句: String idDigits=“”+ID

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

您必须更明确地说明字符串连接,因此请像这样解决您的语句:

String idDigits=“”+IDnum.charAt(0)+IDnum.charAt(IDnum.length()-1);
添加Java字符、短字符或字节的结果是int:

试试这个

公共字符串getIDdigits()
{
字符串idDigits=“”+IDnum.charAt(0)+IDnum.charAt(IDnum.length()-1);
返回idDigits;
}

当你第一次添加一个空的字符时,它是add
char
String
如果你把它放在末尾,它首先以数字模式(ASCII)添加,然后转换将把它转换成
String

你是从
字符串
中获取
char
类型,然后使用
+
操作符,在本例中,其行为是将ASCII数值相加

例如,在代码中取字符
'1'
,然后取字符
'4'

public String getIDdigits()
    {
        String idDigits = IDnum.charAt(0) + IDnum.charAt(IDnum.length() - 1) + "";
        return idDigits;
    }
编译器将其解释为ASCII十进制值并添加这些值

IDnum.charAt(0) + IDnum.charAt(IDnum.length() - 1)
这就是你的3位数的来源

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

49 + 52 = 101
String.valueOf(<char>);
"" + IDnum.charAt(0) + IDnum.charAt(IDnum.length() - 1)