(1)整数不仅仅含有数字,还可能以 + 或者 - 开头,表示整数的正负。因此需要对字符串的第一个字符做特殊处理。
(2)输入的字符串中可能含有不是数字的字符。
(3)输入的可能是空字符串。
(4)溢出问题,超过整数的最大范围。
public class String2Int
{
public static int StringtoInt(String str)
{
if(str.length()==0 || str.equals(""))
return 0;
char [] charArray = str.toCharArray(); //将字符串转化为字符数组
boolean flag = true; //判别整数符号的标志
int start = 0;
if(charArray[0]=='-' || charArray[0]=='+')
{
start = 1;//首位字符为+或-,则字符数组索引从1开始
if(charArray[0] == '-')
flag = false;
}
int sum = 0;
//字符'0'对应的ASCII码值是48(转化为int类型),而字符'9'对应的ASCII码值是57
for(int i= start; i<charArray.length; i++)
{
if(charArray[i]<48 || charArray[i]>57)//输入非法字符串
return 0;
sum = sum*10 + (charArray[i] - 48); //将字符转化为对应的数字
}
return flag ? sum:sum*(-1);//三元运算符号
}
public static void main(String [] args)
{
System.out.println(StringtoInt("-123"));
System.out.println(StringtoInt("+123"));
System.out.println(StringtoInt("-123abc"));
}
}
输出结果:
-123
123
0