import java.util.ArrayList; public class Solution { public int StrToInt(String str) { //思路:遍历一遍每个字符 //如果其中包含字母、以及其它符号,则直接返回0 //这里有一种特殊的情况时,+或-在最前面的时候,也是合法的 //关键是:要想到用字符的ASCII码进行判断 if(str==null||str.length()==0){ return 0; } //这个标记位是为了最后区分正负值用 int flag = 1; char[] cs = str.toCharArray(); //下面这一段用来处理+-开头的特殊情况 if(cs[0] =='-'){ flag = -1; cs[0] = '0'; } if(cs[0] =='+'){ cs[0] = '0'; } ArrayList<Integer> list = new ArrayList<>(); //先遍历一遍,把数据放入一个list中 //这里的关键是:用这个(int)c - (int)('0') 将字符转换为数字 for(char c : cs ){ if(c < 48|| c > 57){ return 0; } else{ list.add((int)c - (int)('0')); } } int res = 0; int length = list.size(); //用十进制表示法,个位*10的0次方,十位乘以10的1次方,以此类推 for(int i : list){ res = res + i * (int)Math.pow(10,--length); } //乘以正负值 return res * flag; } }