【剑指offer】把字符串转换为数字--java实现
题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0. 解析:本题需要额外知识点,如数字的ASCII为48-57.将字符0-9转换为数字,则需要计算c=c-‘0’。 另外字符串转换为数组的代码为 char[] array=str.toCharArray();
public class Solution {
public int StrToInt(String str) {
if(str==null)return 0;
int sum=0; //当前的数
char[] array=str.toCharArray();
boolean minus=false;
for(int i=0;i<array.length;i++){
if(i==0&&array[i]==-){
minus=true;
}else if(i==0&&array[i]==+){
minus=false;
}else{
int a=array[i]-0; //得到当前的数字
if (a<0||a>9)return 0; //如果非数字,直接返回0
sum=(minus==false)?sum*10+a:sum*10-a;
if((!minus&&sum>Integer.MAX_VALUE)||
(minus&&sum<Integer.MIN_VALUE))return 0;
//如果sum大于int的最大值,或者小于最小值,返回0
}
}
return sum;
}
}
上一篇:
IDEA上Java项目控制台中文乱码
