您的位置:首页 > 其它

字符串转换成整数

2014-05-15 12:19 225 查看


题目描述

输入一个表示整数的字符串,把该字符串转换成整数并输出,例如输入字符串"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算法时候所做笔记,所有思想目前都来自此地址。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: