在Java中将字符转换为整数

有人可以告诉我这是怎么回事:


char c = '+';

int i = (int)c;

System.out.println("i: " + i + " ch: " + Character.getNumericValue(c));

打印i: 43 ch:-1。这是否意味着我必须依靠原始转换才能转换char为int?那么如何将a转换Character为Integer?


编辑:是的,我知道Character.getNumericValue返回的-1值是否不是数值,这对我来说很有意义。问题是:为什么进行原始转换会返回43?


Edit2: 43是的ASCII码+,但我希望强制转换不会成功,就像getNumericValue没有成功一样。否则,这意味着有两种语义等效的方法可以执行相同的操作,但结果不同?


泛舟湖上清波郎朗
浏览 1171回答 3
3回答

慕丝7291255

正如文档中明确指出Character.getNumericValue()的那样,以数字形式返回字符的值。如果字符不是数字,则返回-1。如果要获取装箱Character对象的数字Unicode代码点,则需要先将其拆箱:int value = (int)c.charValue();

MMTTMM

public class IntergerParser {public static void main(String[] args){String number = "+123123";System.out.println(parseInt(number));}private static int parseInt(String number){    char[] numChar = number.toCharArray();    int intValue = 0;    int decimal = 1;    for(int index = numChar.length ; index > 0 ; index --){        if(index == 1 ){            if(numChar[index - 1] == '-'){                return intValue * -1;            } else if(numChar[index - 1] == '+'){                return intValue;            }        }        intValue = intValue + (((int)numChar[index-1] - 48) * (decimal));        System.out.println((int)numChar[index-1] - 48+ " " + (decimal));        decimal = decimal * 10;    }    return intValue;}
打开App,查看更多内容
随时随地看视频慕课网APP