Java【面试题67】: 把字符串转换成整数

题目:把字符串转换成整数

要求不能使用字符串转整数的库函数。数值为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;
		}
}

猜你喜欢

转载自blog.csdn.net/weixin_38361153/article/details/89257213