字符串之将整数字符串转成整数值

来源:互联网 发布:2017刷钻软件 编辑:程序博客网 时间:2024/05/29 18:52

题目:

字符串之将整形字符串转成整数值,并且属于32位整数范围


例如:

str = "123"  返回 123

str = "012"  不符合书写习惯,所以返回0

str = "A12"  返回0

str = " 0"      返回 0

str = "214783647" 返回 214783647

str = "214783647" 因为溢出了,所以返回 0


代码实现:

package com.chenyu.string.cn;public class StringToNumber {public static void main(String[] args) {String[] ss = {"012", "A32", "234", "-123", "-0123"};for (String s : ss) {int result = stringToNumber(s);System.out.println(result);}}public static int stringToNumber(String target) {if (target == null || target == "") {return 0;}char[] chars = target.toCharArray();if (!check(chars)) {return 0;}boolean res = chars[0] == '-' ? false : true;int minr = Integer.MIN_VALUE % 10;int minq  = Integer.MIN_VALUE / 10;int cur = 0;int value = 0;for (int i = res? 0 : 1; i <chars.length; i++) {cur = '0' - chars[i];if (value < Integer.MIN_VALUE || (value == minq && cur < minr)) {return 0;} //value += cur;  注意这个地方不是这样写的,要记得乘以10,切记value = value*10 + cur;}if (res && value == Integer.MIN_VALUE) {return 0;}return  res? -value: value;}//检验输入的字符是否合法public static boolean check(char[] chars) {if ((chars[0] < '0' || chars[0] >'9') && chars[0] != '-') {return false;}if (chars[0] == '-' && (chars.length == 1 || chars[1] == '0')) {return false;}if (chars[0] == '0' && chars.length > 1) {return false;}for(int i = 1; i < chars.length; i++){if (chars[i] < '0' || chars[i] > '9') {return false;}}return true;}}

运行结果:

00234-1230




0 1
原创粉丝点击