NC100 字符串转换成整数
描述
写一个函数StrToInt,实现把字符串转换成整数的功能。
可能的情况:
1.空字符串
2.正负号
3.前导零
4.空格
5.非数字字符
6.溢出
示例1
输入:123 abc
返回值:123
示例2
输入:012a3
返回值:12
代码
public static int StrToInt(String str) { // 如果输入字符串为空或者只包含空格,则返回0 if (str == null || str.trim().isEmpty()) { return 0; } int sign = 1; // 符号,1表示正数,-1表示负数 int result = 0; // 存储转换后的整数结果 boolean isNumber = false; // 标记是否至少有一个数字被转换 // 去除字符串开头的空格 str = str.trim(); // 检查字符串的第一个字符是否是正负号 if (str.charAt(0) == '+' || str.charAt(0) == '-') { sign = (str.charAt(0) == '-') ? -1 : 1; // 如果是'-'则设置符号为负,否则为正 str = str.substring(1); // 移除第一个字符(正负号) } // 遍历字符串中的每个字符 for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); // 如果当前字符不是数字,则停止转换 if (c < '0' || c > '9') { break; } isNumber = true; // 标记至少有一个数字被转换 int digit = c - '0'; // 将字符转换为对应的整数 // 检查整数溢出,如果result乘以10后大于Integer.MAX_VALUE或者result等于Integer.MAX_VALUE/10且下一个数字大于7,则返回0 if (result > Integer.MAX_VALUE / 10 || (result == Integer.MAX_VALUE / 10 && digit > Integer.MAX_VALUE % 10)) { return 0; } result = result * 10 + digit; // 将当前数字加到结果中 } // 如果没有转换任何数字,则返回0 if (!isNumber) { return 0; } // 返回转换后的整数,根据符号进行正负调整 return sign * result; }