把字符串转换成整数

题目描述

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。

思路:设置两个标志位 一个tag 为1表示是正数,为0表示是负数,一个index,为‘+’则index是1,为‘-’则index是-1,什么都没index是0

     再用一个result去接受所有的数,result  =result * 10 + aa;从第一个开始慢慢加起来,不过每次都要判断是否上下溢出,最后还换转换类型

代码如下:

public class Solution {
    public int StrToInt(String str) {
        if(str.length() == 0) return 0;
             int tag = 0;
             int start = 0;
             if(str.charAt(0) == '+'){
                   start = 1;
                   tag  = 1;
             }else  if(str.charAt(0) == '-'){
                   start = 1;
                   tag = 0;
             }else{
                   start = 0;
                    tag = 1;
             }
              long result = 0;
              for(int i = start;i<str.length();i++){
                     char aa = str.charAt(i);
                      if(aa >= '0' && aa <= '9'){
                             result = result * 10 + (aa - '0');
                         if(tag == 1 && result > Integer.MAX_VALUE){
                             throw new RuntimeException("上溢出");
                         }
                         if(tag == 0 && result < Integer.MIN_VALUE){
                             throw new RuntimeException("下溢出");
                         }
                      }else{
                          return 0;
                      }
              }
               if(tag == 0){
                   return (int)(result * (-1));
               }else{
                   return (int)result;
               }
    }
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值