剑指offer43--字符串转化成整数
2016-07-10 12:06
399 查看
一、题目
题目:实现一个函数stringToInt,实现把字符串转换成整数这个功能,不能使用atoi或者其他类似的库函数。
二、思想(1)使用字符串的方法charAt( )来对字符串进行操作
(2)本题目其实考察的不是简单的转换,而是对思想全面性的考察
(3)考察的是能否注意到所有可能抛出异常的情况
(4)正负、是否都为数字、最大范围等
三、程序
package 剑指offer; /*题目:实现一个函数stringToInt,实现把字符串转换成整数这个功能,不能使用atoi或者其他类似的库函数。*/ public class Test49 { public static int stringToInt(String num){ // 边界条件判断 if(num == null || num.length() < 1){ throw new NumberFormatException(); } char first = num.charAt(0); // 为了避免冗余,使用下面条件选择的方式 if(first == '-'){ return parseString(num, 1, false); }else if(first == '+'){ return parseString(num, 1, true); }else if(first >= '0' && first <= '9'){ return parseString(num, 0, true); }else{ throw new NumberFormatException(); } } // 判断是不是数字 private static boolean isDigit(char c) { return c >= '0' && c <= '9'; } // 真正的对字符串进行转换,主要使用的方法是charAt() public static int parseString(String num, int index, boolean i){ if(index >= num.length()){ throw new NumberFormatException(); } int result = 0; long temp = 0; while(index < num.length() && isDigit(num.charAt(index))){ temp = temp * 10 + (num.charAt(index) - '0'); if (temp > 0x8000_0000L) { throw new NumberFormatException(num); } index++; } // 判断数据的正负 if(i){ if(temp > 0x8000_0000L){ throw new NumberFormatException(num); }else{ result = (int)temp; } }else { if (temp == 0x8000_0000L) { result = 0x8000_0000; } else { result = (int) -temp; } } return result; } public static void main(String[] args) { System.out.println(stringToInt("123")); System.out.println(stringToInt("+123")); System.out.println(stringToInt("-123")); System.out.println(stringToInt("1a123")); System.out.println(stringToInt("+1233456")); System.out.println(stringToInt("-1232424")); System.out.println(stringToInt("+++")); System.out.println(stringToInt("---")); } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- 关于PHP浮点数你应该知道的(All 'bogus' about the float in PHP)
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序