题目:把字符串转换成整数
要求不能使用字符串转整数的库函数。数值为0或者字符串不是一个合法输入的数值则返回0
思路:
需要注意的点:
1.只输入一个符号时怎么处理
2.输入不是数字的其他符号类型时
3.输入的字符串大于整型范围时,考虑溢出
3.空串或者长度为0时
- 字符’0’对应的ASCII码值是48(转化为int类型);
- 字符’9’对应的ASCII码值是57 (48+10-1=57);
package jianZhiOffer;
/*
* 把字符串转换成整数
* 要求不能使用字符串转整数的库函数。数值为0或者字符串不是一个合法输入的数值则返回0
*/
public class Demo67 {
public static void main(String[] args) {
System.out.println(parseStringToInt("-"));
System.out.println(parseStringToInt("-456692"));
System.out.println(parseStringToInt(""));
}
public static int parseStringToInt(String str) {
int len = str.length();
if(len==0 || str=="")
return 0;
if((str.charAt(0)=='+'||str.charAt(0)=='-')&& str.length()==1) {
return 0;
}
int sum=0;
int fuhao=1; //当第一位为正或者无符号时,置符号位为1
if(str.charAt(0)=='-')
fuhao = -1;
if(str.charAt(0)=='+' || str.charAt(0)=='-')
str = str.substring(1,str.length());
char[] a = str.toCharArray();
for(int i=0;i<a.length;i++) {
if(a[i]<48 || a[i]>57)
return 0;
sum = sum*10+a[i]-48;
}
sum = sum*fuhao;
if(sum<Integer.MIN_VALUE || sum>Integer.MAX_VALUE)
return 0;
else
return sum;
}
}