Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.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
Java “令人困惑”;将数字字符数组转换为int值;行为_Java - Fatal编程技术网

Java “令人困惑”;将数字字符数组转换为int值;行为

Java “令人困惑”;将数字字符数组转换为int值;行为,java,Java,“将数字字符数组转换为int值。” 代码如下: public static int parseInt(char[] a){ int result=0; for(int i=0;i<a.length;i++){ result=result*10+(a[i]-'0'); } return result; } publicstaticintparseint(char[]a){ int结果=0; 对于(int i=0;i字符“0”到“9”相当于in

“将数字字符数组转换为int值。”

代码如下:

public static int parseInt(char[] a){
    int result=0;
    for(int i=0;i<a.length;i++){
        result=result*10+(a[i]-'0');
    }
    return result;
}
publicstaticintparseint(char[]a){
int结果=0;

对于(int i=0;i字符“0”到“9”相当于int值48到57,因此要获得由字符表示的值,必须将其减去48


对于第二个问题,将“a”转换为数值意味着什么?

你的问题比乍一看更有趣。普通人使用以10为基数的数字,并且在任何已知的字符集中,从0到9的数字都是连续的值。因此,“x”的值(其中“x”是从“0”到“9”的字符)是“x”-“0”

但数学家使用的数字是任意基数。对于信息学家来说,基数2(二进制)、8(八进制)和16(十六进制)是最新的,但基数12(及其导数60)是以小时、分钟和秒为单位间接使用的。旧的货币系统部分使用基数12,因为除以2、3或4是精确的

Java通过
Character.getNumericValue(char c)
确认这些任意基,它给出:

  • “x”-“0”表示字符“0”到“9”
  • 'x'-'a'+10表示字符'a'到'z'(包括导数:'e'与'e'相同)
  • “X”-“A”+10表示字符“A”到“Z”(包括大写导数)
因此,对于更多字符,您函数的泛化是:

public static int parseInt(char[] a){
    int result=0;
    for(int i=0;i<a.length;i++){
        result=result*base+(Character.getNumericValue(a[i]);
    }
    return result;
}
publicstaticintparseint(char[]a){
int结果=0;

对于(int i=0;问题的第二部分是如此荒谬,以至于我几乎笑得要死。“我如何调整代码以将[字母字符]转换为数值?”-好的,只要你能告诉我有多少只羊是
zzz
sheep,你就可以肯定我会第一个回答……如果我调用[0]时a={'1','2','5'}是一个int值,它是49,所以我们需要减去'0',它是48?为什么我们在调用[0]时可以直接得到int值?因为一个字符不是int,即使这两种类型之间存在自然转换…看看这个,你应该得到它: