比较冗长,但是要可读性强就可以了
public int StrToInt(String str) { if(str==null || str.length()==0){ return 0; } char [] chars=str.toCharArray(); int [] nums=new int[chars.length]; int res=0; int isSymbol=0; for(int i=0;i<chars.length;i++){ int tmp=chars[i]-'0'; if(i==0){ if(chars[i]=='+'){ isSymbol=1; } else if(chars[i]=='-'){ isSymbol=-1; } else if(tmp<=9 && tmp>=0 ){ nums[i]=tmp; } else{ res=0; return res; } }else { if(tmp<=9 && tmp>=0){ nums[i]=tmp; } }else{ res=0; return res; } } } // 求和方式1 if(isSymbol==0){ for(int i=nums.length-1;i>=0;i--){ res+=nums[i]*Math.pow(10,nums.length-1-i); } }else{ for(int i=nums.length-1;i>=1;i--){ res+=nums[i]*Math.pow(10,nums.length-1-i); } } //求和方式2 if(isSymbol==0){ for(int i=0;i<nums.length;i++){ res=res*10+nums[i]; if(res>Integer.MAX_VALUE){ return 0; } } }else{ for(int i=1;i<nums.length;i++){ res=res*10+nums[i]; if(res>Integer.MAX_VALUE){ return 0; } } } if(isSymbol==-1){ res=-res; } return res; }