1 问题描述

输入一个由数字组成的字符串,请把它转换成整数并输出。例如,输入字符串“123”,输出整数123。

请写出一个函数实现该功能,不能使用库函数。


2 解决方案

解答本问题的基本思路:从左至右扫描字符串中的每个字符,把之前扫描得到的数字乘以10,再加上当前字符表示的数字。

但是,基本思路是这样,还要注意以下几点:

(1)最好判断一下输入是否为空。

(2)如果字符串的第一个字符是‘-’号,最终得到的整数必为负整数。

(3)输入的字符串中不能含有不是数字的字符。

(4)输入的字符串不能太长,否则转换成整数后会导致整数溢出。

具体实现代码如下:

package com.liuzhen.string_1;import java.util.Scanner;public class StringToInt {public static int Max_INT = Integer.MAX_VALUE;public static int Min_INT = Integer.MIN_VALUE;public int getStringToInt(String A){char[] arrayA = A.toCharArray();int n = 0;if(A.equals("") || A.equals(null))     //判断输入是否为空return 0;int i = 0;while(arrayA[i] == ' ')   //处理字符串首位的空格i++;int sign = 1;   //用于判定输入字符串数字的正负,初始化为1表示为正数if(arrayA[i] == '+' || arrayA[i] == '-'){if(arrayA[i] == '-')sign = -1;i++;}while(i < arrayA.length && Character.isDigit(arrayA[i])){  //确定是数字0~9才执行循环int c = arrayA[i] - '0';//当输入字符串表示数为正数,且大于Max_INTif(sign > 0 && (n > Max_INT/10 || (n == Max_INT/10 && c > Max_INT%10))){n = Max_INT;break;}//当输入字符串表示数为负数,且小于Min_INTif(sign < 0 && (n + Min_INT/10 > 0 || (n + Min_INT/10 == 0 && c + Min_INT%10 > 0))){n = Min_INT;break;}//把之前得到的数字乘以10,再加上 当前字符表示的数字n = n*10 + c;i++;}return sign > 0 ? n : -n;}public static void main(String[] args){StringToInt test = new StringToInt();Scanner in = new Scanner(System.in);System.out.println("请输入一个由数字组成的字符串:");String A = in.nextLine();int result = test.getStringToInt(A);System.out.println("整数result = "+result);}
}

运行结果:

请输入一个由数字组成的字符串:-1000
整数result = -1000请输入一个由数字组成的字符串:
+100000
整数result = 100000请输入一个由数字组成的字符串:
a1212
整数result = 0请输入一个由数字组成的字符串:
1000000000000
整数result = 2147483647请输入一个由数字组成的字符串:
-10000000000
整数result = -2147483648

转载于:https://www.cnblogs.com/liuzhen1995/p/6399531.html

算法笔记_028:字符串转换成整数(Java)相关推荐

  1. 【Java】 剑指offer(67) 把字符串转换成整数

      本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 请你写一个函数StrToInt,实现把字符串转换成整数这个功能 ...

  2. 剑指Offer(Java版):把字符串转换成整数

    2019独角兽企业重金招聘Python工程师标准>>> 题目:实现一个函数 stringToInt,实现把字符串转换成整数这个功能,不能使用 atoi 或者其他类似的库函数. 题目解 ...

  3. 程序员面试题精选100题(17)-把字符串转换成整数[算法]

    题目:输入一个表示整数的字符串,把该字符串转换成整数并输出.例如输入字符串"345",则输出整数345. 分析:这道题尽管不是很难,学过C/C++语言一般都能实现基本功能,但不同程 ...

  4. 【算法】剑指 Offer 67. 把字符串转换成整数

    1.概述 写一个函数 StrToInt,实现把字符串转换成整数这个功能.不能使用 atoi 或者其他类似的库函数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当 ...

  5. 面试题67. 把字符串转换成整数

    题目 写一个函数 StrToInt,实现把字符串转换成整数这个功能.不能使用 atoi 或者其他类似的库函数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们 ...

  6. 程序员编程艺术第三十 三十一章 字符串转换成整数,通配符字符串匹配

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 第三十~ ...

  7. 字符串转换成整数,带通配符的字符串匹配

    之前本一直想写写神经网络算法和EM算法,但写这两个算法实在需要大段大段的时间,而平时上班,周末则跑去北大教室自习看书(顺便以时间为序,说下过去半年看过的自觉还不错的数学史方面的书:<数理统计学简 ...

  8. 字符串转换成整数,字符串匹配问题

    本文转自csdn大神v_JULY_v的博客 地址: http://blog.csdn.net/v_july_v/article/details/9024123 阅读心得:自己原先想得太天真了... 第 ...

  9. 程序员编程艺术第三十~三十一章:字符串转换成整数,通配符字符串匹配

    第三十~三十一章:字符串转换成整数,带通配符的字符串匹配 前言 之前本一直想写写神经网络算法和EM算法,但写这两个算法实在需要大段大段的时间,而平时上班,周末则跑去北大教室自习看书(顺便以时间为序,说 ...

最新文章

  1. TypeScript 的 ?: 、两个问号、?. 分别是什么意思?
  2. Java并发必知必会第三弹:用积木讲解ABA原理
  3. OpenGL 纹理学习总结
  4. SQL必知必会——插入数据(十五)
  5. redis分布式锁-基本概念与实现方式对比
  6. LAMP架构介绍,MySQL、MariaDB介绍,MySQL安装
  7. 软件调试学习笔记(六)—— 硬件断点
  8. java groovyshell_在java中使用groovy怎么搞
  9. 35 FI配置-财务会计-应收账款和应付账款-为客户定义备选统驭科目
  10. 菜鸟裹裹升级退换货:全程可见让商家物流纠纷率降半
  11. XmlHttpRequest错误:Access-Control-Allow-Origin不允许使用原点null
  12. 最近帮客户优化的一个通讯应用
  13. 特征选择算法之Relief算法python实现
  14. Drools教程(基础篇)—— Eclipse插件安装
  15. dnf手游找不到服务器,DNF手游无法连接服务器怎么办 无法连接服务器解决详解...
  16. 美国恐怖故事第一季/全集American Horror Story 1全迅雷下载
  17. LiLeiHanMeiMei的隐式马尔可夫爱情
  18. 测试工程师需掌握的技能
  19. 2.12美团点评技术
  20. win7服务器如何还原系统教程,怎么快速处理win7系统架设本地服务器的还原技巧...

热门文章

  1. 【BZOJ】1706: [usaco2007 Nov]relays 奶牛接力跑
  2. UDFs实现Memcached与Mysql的自动更新
  3. Linux环境用Sendmail架设Mail服务器
  4. linux 文件夹 含义 表示(转)
  5. [导入]PHP通用分页类
  6. 中央暗示:07年别急买房
  7. Quest 公司的Shareplex 与 GoldenGate比较
  8. 学习开发语言 python 资料
  9. JavaScript对象及初始面向对象
  10. 解决devenv.exe应用程序错误,应用程序发生异常