您的位置:首页 > Web前端

剑指offer 49. 把字符串转换成整数

2017-05-02 14:57 399 查看
// 字符串转换为整数 : atoi
//
// 可能的输入:
// 1 带符号数
// 2 无符号数
// 3 零
// 4 空指针
// 5 超出表示范围 – 暂时仅仅是直接退出且设置最小 – 可以考虑此时抛个异常
// 6 非法输入,比如并不是一个0-9或者+ -组成的字符串 – 对于非法输入一律返回的是Integer.MIN_VALUE
public class Main {

public static void main(String[] args) throws Exception {
String str1 = "123456";
String str2 = "-123456";
String str3 = "-6";
String str4 = "-";
String str5 = "+1";
String str6 = "+abc";
String str7 = null;

System.out.println(strToInt(str1));
System.out.println(strToInt(str2));
System.out.println(strToInt(str3));
System.out.println(strToInt(str4));
System.out.println(strToInt(str5));
System.out.println(strToInt(str6));
System.out.println(strToInt(str7));
}

public static int strToInt(String str) throws Exception {
if(str == null){
return Integer.MIN_VALUE;
}
for(int i = 0;i<str.length();i++){
if(!judge(str.charAt(i))){
return Integer.MIN_VALUE;
}
}
double value = 0;
if(str.charAt(0) == '+' || str.charAt(0) == '-'){
value = trans(str.substring(1));
if(str.charAt(0) == '-'){
return (int)value*-1;
}else{
return (int)value;
}
}else{
value = trans(str);
return (int)value;
}
}

public static boolean judge(char c){
if(c == '+' || c == '-'){
return true;
}
if(c<='9' && c>='0'){
return true;
}
return false;
}

public static double trans(String str){
double result = 0;
for(int i = 0;i<str.length();i++){
result = result+(str.charAt(i)-'0')*Math.pow(10,str.length()-i-1);
}
return result;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: