题目描述
将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0
示例1
输入
复制
+2147483647 1a33
输出
复制
2147483647 0
public int StrToInt(String str) {
if (str.length() == 0)
return 0;
char[] ch = str.toCharArray(); //转换为字符数组
char[] cha = new char[100]; // 去掉空格后的字符
int count = 0;
// 去掉空格
for (int i = 0; i < ch.length; i++) {
if (ch[i] != ' ') {
cha[count++] = ch[i];
}
}
int flag = 1; // 标志正负
int sum = 0; // 求结果
// 判断正负
if (cha[0] == '+') {
flag = 1;
} else if (cha[0] == '-') {
flag = -1;
} else if (cha[0] >= '0' && cha[0] <= '9') {
sum = cha[0] - '0';
}
// 求结果
for (int i = 1; i < count; i++) {
if (cha[i] >= '0' && cha[i] <= '9') {
sum = sum * 10 + cha[i] - '0';
} else {
sum = 0;
break;
}
}
// 判断是否为负
if (flag == -1) {
sum = sum * -1;
}
return sum;
}