在java项目中如何实现将字符串转换为整数
这篇文章给大家介绍在java项目中如何实现将字符串转换为整数,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
“只有客户发展了,才有我们的生存与发展!”这是创新互联的服务宗旨!把网站当作互联网产品,产品思维更注重全局思维、需求分析和迭代思维,在网站建设中就是为了建设一个不仅审美在线,而且实用性极高的网站。创新互联对成都网站建设、成都做网站、网站制作、网站开发、网页设计、网站优化、网络推广、探索永无止境。
java中字符串转整数
该题虽然和我们正常使用的字符串转整数的API中函数不一致,但是通过增加了很多额外的边界或者异常处理,可以锻炼算法思维的敏锐性和处理边界异常等问题的能力。
思路:字符串题一般考查的都是边界条件、特殊情况的处理。所以遇到此题一定要问清楚各种条件下的输入输出应该是什么样的。
这里已知的特殊情况有:
- 能够排除首部的空格,从第一个非空字符开始计算
- 允许数字以正负号(+-)开头
- 遇到非法字符便停止转换,返回当前已经转换的值,如果开头就是非法字符则返回0
- 在转换结果溢出时返回特定值,这里是最大/最小整数
先来几组测试用例:
" 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
在上边的代码中,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
关于在java项目中如何实现将字符串转换为整数就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
文章标题:在java项目中如何实现将字符串转换为整数
地址分享:http://cdiso.cn/article/jhojsh.html