把字符串转换成整数
把字符串转换成整数
http://www.nowcoder.com/questionTerminal/1277c681251b4372bdef344468e4f26e
比较冗长,但是要可读性强就可以了
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;
}