不使用java内置函数,将String字符串转换为int类型

package com.test;

public class AtoiTest {
  public static void main(String[] args) throws Exception {
    String s = "-011134";
    System.out.println("转换前的字符串:" + s);
    System.out.println("atoi1转换后的字符串:" + atoi1(s));
    System.out.println("atoi2转换后的字符串:" + atoi2(s));

  }

  /**
   * 不用java内置函数,将String字符串转换为数字
   * @param s
   * @return
   * @throws Exception
   */
  public static int atoi1(String s) throws Exception {
    if (s == null || s.length() == 0) {
      throw new Exception("要转换的字符串为空,无法转换!");
    }
    int retInt = 0;
    int[] num = new int[s.length()];
    for (int i = 0; i < s.length(); i++) {
      char c = s.charAt(i);
      switch (c) {
      case ‘-‘:
        num[i] = -1;
        break;
      case ‘0‘:
        num[i] = 0;
        break;
      case ‘1‘:
        num[i] = 1;
        break;
      case ‘2‘:
        num[i] = 2;
        break;
      case ‘3‘:
        num[i] = 3;
        break;
      case ‘4‘:
        num[i] = 4;
        break;
      case ‘5‘:
        num[i] = 5;
        break;
      case ‘6‘:
        num[i] = 6;
        break;
      case ‘7‘:
        num[i] = 7;
        break;
      case ‘8‘:
        num[i] = 8;
        break;
      case ‘9‘:
        num[i] = 9;
        break;
      default:
        throw new Exception("要转换的字符串格式错误,无法转换!");
      }
    }
    for (int i = 0; i < num.length; i++) {
      if (num[i] < 0 && i > 0) {
        throw new Exception("要转换的字符串格式错误,无法转换!");
      }
      if (num[i] < 0) {
        continue;
      }
      retInt += Math.pow(10, num.length - i - 1) * num[i];
    }
    if (num[0] == -1) {//代表负数
      retInt = -retInt;
    }
    return retInt;
  }
  /**
   * 不用java内置函数,将String字符串转换为数字
   * @param s
   * @return
   * @throws Exception
   */
  public static int atoi2(String s) throws Exception{
    int retInt = 0;
    if (s == null || s.length() == 0) {
      throw new Exception("要转换的字符串为空,无法转换!");
    }
    boolean isNegative = false;
    for (int i = 0; i < s.length(); i++) {
      if (i==0) {
        if(s.charAt(i)==‘-‘){
          isNegative = true;
          continue;
        }
      }else{
        if(s.charAt(i)>‘9‘ || s.charAt(i)<‘0‘){
          throw new Exception("要转换的字符串格式错误,无法转换!");
        }
      }
      retInt *=10;
      retInt += s.charAt(i) - ‘0‘;
    }
    return isNegative ? -retInt : retInt;
  }
}
时间: 2024-08-25 16:08:48

不使用java内置函数,将String字符串转换为int类型的相关文章

lambda函数,常用函数,内置函数(string,zip()map()filter())的用法

lambda函数胡使用#coding:utf-8g = lambda x,y:x*y/*必须亦g=*/print g(2,3)/*print必须有*/swtich函数使用 def jia(x,y):    return x+ydef jian(x,y):    return x-ydef cheng(x,y):    return x*ydef chu(x,y):    return x/yoperator = {"+":jia,"-":jian,"*&q

Python数据类型的内置函数之str(字符串)

Python数据类型内置函数 - str(字符串函数) - list(列表函数) - tuple(元组函数) - dict(字典函数) - set(收集函数) (str)字符串的一些操作 - 字符串相连方法 1 # 字符串的相连 2 str_1 = "I am" 3 str_2 = "string practice" 4 5 print(str_1 + str_2) 6 # 执行的结果 7 I amstring practice 8 # 可以在中间用空格隔开 9 p

三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数

一 三元表达式.列表推导式.生成器表达式 1.三元表达式 name=input('姓名>>: ') res='SB' if name == 'alex' else 'NB' print(res) 2.列表推导式 #1.示例 egg_list=[] for i in range(10): egg_list.append('鸡蛋%s' %i) egg_list=['鸡蛋%s' %i for i in range(10)] #2.语法 [expression for item1 in iterabl

Python:内置函数

1.abs() 取数字的绝对值,参数可以是整数或浮点数.如果参数是一个复数,则返回其大小 >>> print(abs(-28))28>>> print(abs(-2.34))2.34>>> print(abs(1/3))0.3333333333333333 2.dict() 用于创建字典 >>> dict() #创建空字典{}>>> dict(a='who',b='while',c='whit') #传入关键字创建字

【mysql】mysql内置函数

mysql常用内置函数 1.mysql字符串函数 contact 字符串连接函数 mysql>select contact("he",'llo');# hello lcase 字符串转小写 mysql>select lcase("MYSQL") #mysql ucase 字符串转大写 mysql>select ucase("mysql") #MYSQL length 字符串的长度 mysql>select length(&

python学习之--内置函数:

Python内置函数: Python内置了很多有用的函数,我们可以直接调用.要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数. 1. 内置函数调用之--abs()函数: 1 >>> abs(12) 2 12 3 >>> abs(-89) 4 89 5 >>> #毫无疑问abs是求绝对值的一个python内置函数. 6 ... 7 >>> 调用函数的时候,如果传入的参数数量不对,会报TypeError的错

函数6—内置函数

内置函数 #数据类型中的数字int()num = 1num = int(1) print(type(num)) #查看num的数据类型print(isinstance(num,int)) #判段num的数据类型 print(num is 1) #身份运算 根据id判断 print(float(6)) #变为浮点数 complex() #复数x = complex(1-2j)print(x.real) #查看复数的实部print(x.imag) #查看复数的虚部 #对数字的处理print(abs(

python全栈开发-Day13 内置函数

一.内置函数 注意:内置函数id()可以返回一个对象的身份,返回值为整数. 这个整数通常对应与该对象在内存中的位置,但这与python的具体实现有关,不应该作为对身份的定义,即不够精准,最精准的还是以内存地址为准. is运算符用于比较两个对象的身份,等号比较两个对象的值,内置函数type()则返回一个对象的类型 #更多内置函数:https://docs.python.org/3/library/functions.html?highlight=built#ascii 二.内置函数详情 1.abs

绑定,反射,内置函数

#绑定方法:绑定给谁就应该谁来调用,谁来调用就会把谁当做第一个参数自动传入 import setting #配置文件为setting class mysql: def __init__(self,host,port): #绑定到对象 self.host=host self.port=port @classmethod #绑定到类 def from_conf(cls): return cls(setting.HOST,setting.PORT) @staticmethod #不与类也不与对象绑定