营销型网站一套,免费建立网站有必要吗,四川旅游攻略,免费php网站模板本文参考自《剑指offer》一书#xff0c;代码采用Java语言。 更多#xff1a;《剑指Offer》Java实现合集 题目 请你写一个函数StrToInt#xff0c;实现把字符串转换成整数这个功能。当然#xff0c;不能使用atoi或者其他类似的库函数。 思路 题目很简单#xff0c;主要就… 本文参考自《剑指offer》一书代码采用Java语言。 更多《剑指Offer》Java实现合集 题目 请你写一个函数StrToInt实现把字符串转换成整数这个功能。当然不能使用atoi或者其他类似的库函数。 思路 题目很简单主要就是实现对每个字符转化为数字并进行累加即可。但是有很多特殊情况都需要考虑进去例如null、空字符串、带有正负号、字符不是数字、溢出等等。 对于非法的特殊输入返回值为0还要用一个全局变量进行标记。 写代码时一定要考虑清楚各种测试用例。 测试用例 1.功能测试正、负、零、带有正负号的数字 2.边界值测试最大正整数最小负整数 3.特殊测试null数空字符串仅有正负号非法字符 Java代码 今天脑子有点乱代码总感觉不是很简洁有点繁琐但功能是完善的。 附注:字符串如果仅有正负号这里认定为非法输入 //题目请你写一个函数StrToInt实现把字符串转换成整数这个功能。当然不
//能使用atoi或者其他类似的库函数。public class StringToInt {static boolean isValid false;public static int strToInt(String str) {if(str null || str.length()0)return 0;char[] chars str.toCharArray();long num0; //先用long来存储以防止越界boolean minusfalse;for(int i0; ichars.length; i){if(i0 chars[i]-){minustrue;}else if(i0 chars[i]){minusfalse;}else{int a(int) (chars[i]-0);if(a0 || a9){isValidfalse;return 0;}num (minusfalse) ? num*10a : num*10-a;isValidtrue; //不放在最后面是为了防止str‘’的情况被判断为trueif((!minus num0x7FFFFFFF)||(minus num0x80000000)){isValidfalse;return 0;}}}return (int)num;}//简单测试下public static void main(String[] args) {System.out.println(strToInt(1948243)1948243);System.out.println(isValidtrue);System.out.println(strToInt(1948243)1948243);System.out.println(isValidtrue);System.out.println(strToInt(-1948243)-1948243);System.out.println(isValidtrue);System.out.println(strToInt(-0)0);System.out.println(isValidtrue);System.out.println(strToInt(-1948243)0);System.out.println(isValidfalse);System.out.println(strToInt()0);System.out.println(isValidfalse);System.out.println(strToInt(null)0);System.out.println(isValidfalse);System.out.println(strToInt(999999999999999)0);System.out.println(isValidfalse);System.out.println(strToInt()0);System.out.println(isValidfalse);System.out.println(strToInt(2147483647)2147483647); //0x7FFFFFFFSystem.out.println(isValidtrue);System.out.println(strToInt(2147483648)0);System.out.println(isValidfalse);System.out.println(strToInt(-2147483648)-2147483648); //0x80000000System.out.println(isValidtrue);System.out.println(strToInt(-2147483649)0);System.out.println(isValidfalse);}
}true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true StringToInt 收获 1.熟练掌握char类型转化为int类型操作。 2.边界值测试记住int类型最大正整数为0x7FFFFFFF最小负整数为0x80000000。 3.注意到了负号也要注意到正号。 更多《剑指Offer》Java实现合集 转载于:https://www.cnblogs.com/yongh/p/9973036.html