剑指offer_字符串转整数

来源:互联网 发布:linux ifconfig修改ip 编辑:程序博客网 时间:2024/06/03 06:40
/*将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0 输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0示例1输入+2147483647    1a33输出2147483647    0正常:字符串如何转换为数字有正负号如何处理异常:字符串为空有字母或者符号超出整型范围int-2^31=-21474836482^31=2147483647先求正数的结果2147483648,可2147483648超出整型范围补充:区分正常的0和异常的0如果字符串只有一个正号或者负号*/import java.lang.Math;class  StrToInt2{public static boolean isValid=true;public static int strToInt(String str) {        if (str==null||str.length()<=0)        {isValid=false;return 0;        }int start=0;//除去正负号之外字符串开始的位置int flag=1;//控制符号位if (str.length()==1&&(str.charAt(0)=='+'||str.charAt(0)=='-')){isValid=false;return 0;}else if (str.length()>1&&str.charAt(0)=='+'){start=1;}else if (str.length()>1&&str.charAt(0)=='-'){start=1;flag=-1;}int num=0;for (int i=start; i<str.length(); i++){//判断是否存在字母或者符号if (str.charAt(i)<'0'||str.charAt(i)>'9'){isValid=false;return 0;}num+=flag*(str.charAt(i)-'0')*(Math.pow(10,str.length()-1-i));}return num;    }public static void main(String[] args) {System.out.println(strToInt("-"));}}

原创粉丝点击