标签:算法
输入一个表示整数的字符串,把该字符串转换成整数并输出,例如输入字符串"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("请输入有效的字符串"); } }
标签:算法
原文地址:http://blog.csdn.net/junshuaizhang/article/details/25879807