为了账号安全,请及时绑定邮箱和手机立即绑定

在Java中将字符转换为整数

/ 猿问

在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没有成功一样。否则,这意味着有两种语义等效的方法可以执行相同的操作,但结果不同?


查看完整描述

3 回答

?
慕哥6287543

Character.getNumericValue(c)

在java.lang.Character.getNumericValue(char ch)返回int指定的Unicode字符表示的值。例如,字符'\u216C'(罗马数字五十)将返回一个值为50的int。


字母AZ的大写('\u0041' through '\u005A'),小写('\u0061' through '\u007A')和全角变体('\uFF21' through '\uFF3A' and '\uFF41' through '\uFF5A')形式的数字值为10到35。这独立于Unicode规范,Unicode规范不为这些char值分配数字值。


此方法返回字符的数值,作为非负的int值;


-2,如果字符的数字值不是非负整数;


如果字符没有数字值,则为-1。


查看完整回答
反对 回复 2019-11-14
?
慕丝7291255

正如文档中明确指出Character.getNumericValue()的那样,以数字形式返回字符的值。如果字符不是数字

,则返回-1。


如果要获取装箱Character对象的数字Unicode代码点,则需要先将其拆箱:


int value = (int)c.charValue();


查看完整回答
反对 回复 2019-11-14
?
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;

}


查看完整回答
反对 回复 2019-11-14

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信