首页 > 代码库 > 字符串转换成整数
字符串转换成整数
题目描述
输入一个表示整数的字符串,把该字符串转换成整数并输出,例如输入字符串"345",则输出整数345。
主要思想:将输入的字符串,拆解为单个的字符
1、去空之后,开始的字符是否为“+”或者“-”;
2、每个字符减去‘0’,判读输入的字符是不是0-9的;
3、如果为可变数字字符则先前结果乘以10加当前数字;
4、特别注意越界的问题。
/** * <p> * </p> * @author zhangjunshuai * @date 2014-5-15 上午10:12:14 * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String[] test ="-2147483648,2147483648,-2147483649,abc,-abc,1a,23a8f,-3924x8fc, 321, -321,123 456,123 , - 321, +4488, + 413,++c,++1,--2, -2".split(","); for(int i=0;i<test.length;i++) toNum(test[i]); toNum("-2147483658"); } /** * <p> * 字符转为整数 * </p> * @author zhangjunshuai * @date 2014-5-15 上午11:33:08 * @param stringNum */ public static void toNum(String stringNum){ if(null !=stringNum&&null != stringNum.trim()){ String stringNumTrim = stringNum.trim(); int MAX = Integer.MAX_VALUE; int MIN = Integer.MIN_VALUE; int MAX_DIV = MAX/10; int MIN_DIV = -1*(MIN/10); int MAX_R = MAX%10;//最大值取余 int MIN_R = MIN%10;//最小值取余 int result = 0; int sign = 1; int count = 0; char[] stringnum = stringNumTrim.toCharArray(); if(‘-‘==stringnum[count]){ ++count; sign = -1; } if(‘+‘==stringnum[count]){ ++count; sign = +1; } for(;count<stringnum.length;count++){ int r = stringnum[count]-‘0‘;//char其实就是整数 if(sign>0 &&(result>MAX_DIV||(result==MAX_DIV&&r>MAX_R))){ result =MAX; break; } if(sign<0 &&(result<MIN_DIV||(result==MIN_DIV&&MIN_R<r))){ result = MIN; break; } if(r>-1&&r<10){ result = result*10+r; }else{ break; } } System.out.println("输入的字符为:"+stringNumTrim+",结果是:"+result); }else{ System.out.println("请输入有效的字符串"); } }
PS:
本文是本人在学习July算法时候所做笔记,所有思想目前都来自此地址。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。