/*
* 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。
* 数值为0或者字符串不是一个合法的数值则返回0
获得123的方法:首先1*10+2=12,12*10+3=123
备注:字符'0'对应的ASCII码值是48(转化为int类型),而字符'9'对应的ASCII码值是57
输入负的数据会有符号位,输入正的数据可能有符号位
*/
public class StrToInt {
public int strToInt(String str) {
if(str.length() == 0 || str.equals("")) return 0;
char[] charArray = str.toCharArray();
int start = 0;
boolean flag = true; //区分正负号
//探查有无标志位
if(charArray[0] == '-' || charArray[0] == '+') {
start = 1;
if(charArray[0] == '-' ) {
flag = false;
}
}
int sum = 0;
for(int i = start;i < charArray.length;i ++) {
if(charArray[i] < 48 || charArray[i] > 57) return 0; //非数字不合法
sum = sum * 10 + (charArray[i] - 48); //将ASCII码值转化为正常的数字
}
return flag ? sum : sum * -1;
}
public static void main(String[] args) {
System.out.println(new StrToInt().strToInt("-123"));
}
}