码迷,mamicode.com
首页 > 其他好文 > 详细

(atoi)String to Integer 49

时间:2015-03-30 20:49:09      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:

corner case的处理

? ?

整数一般考虑两点:一点是符号,另外一点是越界

? ?

首先去掉多余的空格字符

? ?

然后读符号,可能是正号,也可能是负号,也可能没有符号

? ?

然后按顺序读数字

? ?

结束条件有三:

1、异常字符出现——舍弃异常字符后的数据,保留前面的数作为结果;

2、数字越界——返回最接近的整数;

3、正常结束

? ?

长度为0,返回0

? ?

输入0,返回0,但有个finished,如果为true,则是输入0,如果为false,则是长度0,如果直接是异常字符,那么还是返回0,此时finishedfalse

? ?

? ?

package stringToInt49;

? ?

public class StringToInt49 {

static boolean finished = false;

public int atoi(String str) {

int length = str.length();

if (length == 0)

return 0;

int i = 0;

boolean minus = false;

if (str.charAt(0) == ‘-‘) {

minus = true;

i++;

} else if (str.charAt(0) == ‘+‘) {

i++;

}

long MIN_VALUE = Integer.MIN_VALUE;

long MAX_VALUE = Integer.MAX_VALUE;

long num = 0;

? ?

for (; i < length && !finished; i++) {

char c = str.charAt(i);

if (c >= ‘0‘ && c <= ‘9‘) {

num *= 10;

num += c - ‘0‘;

} else {

num=0;

break;

}

? ?

if (minus && 0 - num < MIN_VALUE) {

return Integer.MIN_VALUE;

}

if (!minus && num > MAX_VALUE) {

return Integer.MAX_VALUE;

}

}

if (i==length) {

finished = true;

}

return minus ? new Long(0 - num).intValue() : new Long(num).intValue();

}

public static void main(String[] args) {

StringToInt49 stringToInt49=new StringToInt49();

System.out.println(stringToInt49.atoi("123"));

}

}

? ?

(atoi)String to Integer 49

标签:

原文地址:http://www.cnblogs.com/keedor/p/4378928.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!