介绍
这篇文章给大家介绍在java项目中如何实现将字符串转换为整数,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
<强> java中字符串转整数强>
,,,,,,该题虽然和我们正常使用的字符串转整数的API中函数不一致,但是通过增加了很多额外的边界或者异常处理,可以锻炼算法思维的敏锐性和处理边界异常等问题的能力。
思路:字符串题一般考查的都是边界条件,特殊情况的处理,所以遇到此题一定要问清楚各种条件下的输入输出应该是什么样的。
这里已知的特殊情况有:
- <李>能够排除首部的空格,从第一个非空字符开始计算李> <>李允许数字以正负号(+ -)开头李> <>李遇到非法字符便停止转换,返回当前已经转换的值,如果开头就是非法字符则返回0 李> <李>在转换结果溢出时返回特定值,这里是最大/最小整数
李,>
先来几组测试用例:
“010“; “;+ 004500, “;-001 + 2 a42" “;123 + 0”; “-2147483648”; “2147483648”; “;- 321“; “;-11919730356 x" “9223372036854775809“
<强>以上的测试用例对应的正确输出如下:强>
10 4500 1 0 -2147483648 2147483647 0 -2147483648 2147483647
Java实现代码如下:
公共静态int myAtoi (String str) { 如果(str==null | | str.length ()==0) 返回0; char[]数组=str.toCharArray (); 长期结果=0;//要返回的结果 int数=0;//记录' + & # 39;或者”& # 39;出现的次数 int num=0;//判断空格出现的位置 int标志=1;//正数还是负数 for (int i=0;我& lt;array.length;我+ +){ 字符c=array[我]; 如果(c>=& # 39; 0 & # 39;,, c<=& # 39; 9 & # 39;) { 结果=结果* 10 + c & # 39; 0 & # 39;;//判断是否溢出 如果标志==1,和result> Integer.MAX_VALUE) { 返回Integer.MAX_VALUE; }else if(标志==1,,-result在上边的代码中,为循环遍历数组中,判断某个char是否是数字,可以使用<强> Character.isDigit (c) >强方法,计算结果时,可以使用<强> Character.getNumericValue (c) >强方法来得到某个字符类型的数值,总之就是可以很方便的使用字符里边的静态方法。
重写的为循环如下:
(int i=0;我& lt;array.length;我+ +){ 字符c=array[我]; 如果(Character.isDigit (c)) { 结果=结果* 10 + Character.getNumericValue (c); 如果标志==1,和result> Integer.MAX_VALUE) { 返回Integer.MAX_VALUE; }else if(标志==1,,-result关于在java项目中如何实现将字符串转换为整数就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。
在java项目中如何实现将字符串转换为整数