这篇文章给大家介绍在java项目中如何实现将字符串转换为整数,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
java中字符串转整数
该题虽然和我们正常使用的字符串转整数的API中函数不一致,但是通过增加了很多额外的边界或者异常处理,可以锻炼算法思维的敏锐性和处理边界异常等问题的能力。
思路:字符串题一般考查的都是边界条件、特殊情况的处理。所以遇到此题一定要问清楚各种条件下的输入输出应该是什么样的。
这里已知的特殊情况有:
先来几组测试用例:
" 010"
" +004500"
" -001+2a42"
" +0 123"
"-2147483648"
"2147483648"
" - 321"
" -11919730356x"
"9223372036854775809"
以上的测试用例对应的正确输出如下:
10
4500
-1
0
-2147483648
2147483647
0
-2147483648
2147483647
Java实现代码如下:
public static int myAtoi(String str) {
if(str==null||str.length()==0)
return 0;
char[] array = str.toCharArray();
long result = 0; // 要返回的结果result
int count = 0; // 记录‘+'或者‘-'出现的次数
int num = 0; // 判断空格出现的位置
int flag = 1; // 正数还是负数
for (int i = 0; i < array.length; i++) {
Character c = array[i];
if(c>='0'&&c<='9'){
result = result*10+c-'0';
// 判断是否溢出
if(flag==1&&result>Integer.MAX_VALUE){
return Integer.MAX_VALUE;
}else if(flag==-1&&-result<Integer.MIN_VALUE)
return Integer.MIN_VALUE;
num++;
}else if(c==' '&&num==0&&count==0)
continue;
else if(c=='+'&&count==0){
count = 1;
}
else if(c=='-'&&count==0){
flag = -1;
count = 1;
}
else{
return (int) (flag*result);
}
}
return (int) (flag*result);
}
在上边的代码中,for循环遍历数组中,判断某个char是否是数字,可以使用Character.isDigit(c)方法,计算result时,可以使用Character.getNumericValue(c)方法来得到某个char类型的数值,总之就是可以很方便的使用Character里边的静态方法。
重写的for循环如下:
for (int i = 0; i < array.length; i++) {
Character c = array[i];
if(Character.isDigit(c)){
result = result*10+Character.getNumericValue(c);
if(flag==1&&result>Integer.MAX_VALUE){
return Integer.MAX_VALUE;
}else if(flag==-1&&-result<Integer.MIN_VALUE)
return Integer.MIN_VALUE;
num++;
}else if(Character.isSpaceChar(c)&&num==0&&count==0)
continue;
else if(c=='+'&&count==0){
count = 1;
}
else if(c=='-'&&count==0){
flag = -1;
count = 1;
}
else{
return (int) (flag*result);
}
}
关于在java项目中如何实现将字符串转换为整数就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。