把 字符串转换为整数的算法

原创 2015年07月07日 21:38:11
public class StringToInteger {
//定义一个全局变量,用来表示此输出是否异常
private int flag=0;//flag=0是正常,falg=1是异常
public int myAtoi(String str) {
//(1)判断字符串为空,或者是""的情况,str=null,str.length()在运行时会报错
if(str==null||str.length()==0){
flag=1;
return 0;

}

int num=0;//定义一个数值记录result被记录的次数,
int result=0;//用来存储字符串转换为整数的结果;
int zf=1;//用来表示当前数字是正数还是负数

int index=0;//用来表示正负号的个数,超过一个则报异常

for(int i=0;i<str.length();i++){//“ ”写在“+”前面不会报错,但写在其后面就视为异常

if(str.charAt(i)=='+'||str.charAt(i)=='-'){//如果是正负号,判断正负号的个数超过1了吗
if(index>=1||num>0){//如果"++13"或者"13+14"即出现多次正负号或者正负号在数据中,返回“+”之前的结果
flag=1;
return result;
}
else{
if(str.charAt(i)=='-'){
zf=-1;
}
index++;
continue;//跳出本次循环进行下一次
}
}
if(str.charAt(i)==' '){//如果是空格
if(index!=0||num>0){//如果空格在数字或者正负号之间"+ 003" 或者 "8  9"则报异常,return  ' '之前的数字
flag=1;
return result;
}else{
continue;//如果空格的出现正常,则进行下次循环
}
}
//经过上面的处理,留下来的是0到9的整数还有非法字符
//如果出现特殊字符非 (1)"+" (2) "-" (3)" "(4) "12345"则报异常
int temp=str.charAt(i)-'0';
    if(temp>9||temp<0){//如果是非(1)"+" (2) "-" (3)" "(4) "12345"这些字符则报异常,返回特殊字符之前的结果
    flag=1;
    return result;
   
    }else{
    if(result>Integer.MAX_VALUE/10||(result==Integer.MAX_VALUE/10&&temp>Integer.MAX_VALUE%10))//考虑数据超过整数范围的情况
    {
    result=Integer.MAX_VALUE;
    flag=1;//超出整数的上限则以上限为准
    return result;
   
    }//超出整数的下限,则以下限为准
    if(result<Integer.MIN_VALUE/10||(result==Integer.MIN_VALUE/10&&temp>(Integer.MIN_VALUE%10)*(-1))){
    result=Integer.MIN_VALUE;
    flag=1;
    return result;
   
    }
    if(zf<0){//如果是负数
    result=10*result-temp;
    }else{
    result=10*result+temp;
    }
    num++;
   
    }
}

return result;

}

要考虑的

版权声明:本文为博主原创文章,未经博主允许不得转载。

面试题33:把字符串转换为整数

C语言的库函数atoi()的作用是将一个字符串转换为整数。写一个函数StrToInt,实现这一功能。...
  • htyurencaotang
  • htyurencaotang
  • 2013年09月01日 20:29
  • 5622

【剑指offer-Java版】49把字符串转换为整数

字符串转换为整数 : atoi可能的输入: 1 带符号数 2 无符号数 3 零 4 空指针 5 超出表示范围 – 暂时仅仅是直接退出且设置最小 – 可以考虑此时抛个异常 6 非法输入,比如...
  • Sugar_Z_
  • Sugar_Z_
  • 2016年04月27日 09:48
  • 912

把字符串转换成整数(java版)

【题目描述】将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0【输入说明】输入一个字符串,包括数字字母符号,可以为空【输出说明】如果是合法的...
  • ouyangyanlan
  • ouyangyanlan
  • 2017年06月07日 11:16
  • 1353

【C/C++】字符串转换成整数

考虑测试用例: 1、功能测试(输入的字符串表示正数、负数和0)。 2、边界值测试(最大的正整数和最小的负整数)。 3、特殊字符的输入(NULL、字符串中含有非法字符)。#include usin...
  • wait_hua
  • wait_hua
  • 2014年02月28日 16:03
  • 1436

把字符串转换为整数

注意问题: 1)字符串是空指针的情况。 2)如果输入的是一个空字符串“” 3)所有‘0’到‘9’之外的字符都是非法的吗?加号和减号是合法输入。 4) 考虑溢出 #include usin...
  • buyingfei888
  • buyingfei888
  • 2014年07月30日 15:52
  • 706

编程算法 - 把字符串转换为整数 代码(C)

把字符串转换为整数 代码(C)本文地址: http://blog.csdn.net/caroline_wendy题目: 写一个函数StrToInt, 模拟atoi的功能, 把字符串转换为整数.需要考虑...
  • u012515223
  • u012515223
  • 2014年07月16日 13:02
  • 1699

将字符串转化为整数,如 "-123" --> -123

  #include #include using namespace std;int Num(char *str);int main(){ int n; char* str = new char[1...
  • Deutschester
  • Deutschester
  • 2010年06月05日 13:44
  • 583

【字符串处理算法】字符串转换为整数的算法设计及C代码实现

一、需求描述输入一个由数字构成的字符串,编写程序将该字符串转换为整数并输出。例如,如果输入的字符串是“12345”,那么输出的整数是12345。注意,不要使用C语言的库函数atoi。 二、算法设计我们...
  • zhouzxi
  • zhouzxi
  • 2016年02月19日 14:39
  • 2822

Java代码 将字符串转换成整数

这个算法题目很经典,我用的是Java语言,讲一个给出的字符串转换成整数,我们可以分为四步来进行。 算法思想:1、第一步:给出一个字符串,首先我们应该先判断它是否为空,这个可以通过调用字符串的长度方法...
  • yangmm2048
  • yangmm2048
  • 2015年04月26日 17:16
  • 2422

c语言,字符串转换成整数

c语言的数字字符串转换为整数,1.可接受“123 2123”处理为1232123;2.空指针、正负号、非纯数字字符串、数据越界溢出的错误处理。...
  • u010127332
  • u010127332
  • 2016年07月08日 21:26
  • 1763
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:把 字符串转换为整数的算法
举报原因:
原因补充:

(最多只允许输入30个字)