java字符串转整型——面试题(不使用Integer.parseInt())

此时不允许使用java提供的方法,那么就需要使用Unicode编码,由表可以知道,整型1和字符’1’相差48
在这里插入图片描述
再有需要考虑的情况是字符串中有一些其他的字符,因此需要获取字符串中的数字,再进行相应位数的运算

private static int getBit(char[] arr){//获取数字的位数
    int count=0;
    for(int i=0;i<arr.length;i++){
        if(arr[i]>='0'&&arr[i]<='9'){
            count++;
        }
    }
    return count;
}

public static int stringToInt(char[] arr){//字符串转整型
    int sum=0;//获取最后的结果
    int count=0;
    int bit=getBit(arr);
    for(int i=0;i<arr.length;i++){
        if (arr[i] >= '0' && arr[i]<='9') {
            arr[i]-='0';//arr[i]-=48;//根据Unicode编码
            sum+=(Math.pow(10,bit-1-count))*arr[i];//每一位数字对应的位数进行运算并相加
            count++;
        }
    }
    for(int i=0;i<arr.length;i++){//如果有负号进行的操作
        if(arr[i]=='-'){
            sum*=(-1);
        }
    }
    return sum;
}
public static void main(String[] args) {//进行测试
    System.out.print("请输入一个字符串:");
    Scanner scanner = new Scanner(System.in);
    String str = scanner.nextLine();
    char[] arr = str.toCharArray();
    System.out.println(stringToInt(arr));
}

测试一
在这里插入图片描述
测试二
在这里插入图片描述
这里说一下调试过程中遇到的问题,在主函数中直接给定字符串和输入一个字符串出来的结果不同,后来才知道,原来学的输入一个字符串是 scanner.next(),但是如果测试时候字符串中有空格结果就不对了,这里要写scanner.nextLine(),区别是next方法是以空格或者回车分割,而nextLine只以回车键分割

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值