将整数字符串转成整数值

来源:互联网 发布:java程序设计教程 实验 编辑:程序博客网 时间:2024/06/05 11:04

题目
给定一个字符串str,如果str符合日常书写的整数形式,并且属于32位整数的范围,返回所代表的整数值,否则返回0。
eg
str = “123”,返回123.
str = “023”,因为“023”不符合日常的书写习惯,所以返回0.
str = “A23”,返回0;
str = “0”,返回0;
str= “2147483647”,返回2147483647.
str = “2147483648”,因为溢出了,所以返回0;
str = “-123”,返回-123;
代码

public boolean isValid(char[] chas){    if(chas[0]!= '-'&&(chas[0]<'0'||chas[0]>'9'){        return false;    if(chas[0]=='-'&&(chas.length ==1||chas[1] =='0')){        return false;    if(chas[0]=='0'&&chas.length>1){        return false;    for(int i =1;i<chas.length;i++){        if(chas[i]<'0'||chas[i]>'9'){            return false;        }    }    return true;}
public int convert(String str){    if(str == null || str.equals(""){        return 0;    }    char [] chas = str.toCharArray();    if(!isValid(chas)){        return 0;    }    boolean posi = chas[0]=='-'?false:true;    int minq = Integer.MIN_VALUE/10;    int minr = Integer.MIN_VALULE%10;    int res = 0;    int cur = 0;    for(int i = posi?0:1;i<chas.length;i++){        cur = '0'-chas[i];        if((res<minq)||(res == minq&&cur<minr){            return 0;        }        res = res*10+cur;    }    if(posi&&res == Integer.MIN_VALUE){        return 0;    }    return posi?-res:res;}
原创粉丝点击