算法笔记_028:字符串转换成整数(Java)
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)相关推荐
- 【Java】 剑指offer(67) 把字符串转换成整数
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 请你写一个函数StrToInt,实现把字符串转换成整数这个功能 ...
- 剑指Offer(Java版):把字符串转换成整数
2019独角兽企业重金招聘Python工程师标准>>> 题目:实现一个函数 stringToInt,实现把字符串转换成整数这个功能,不能使用 atoi 或者其他类似的库函数. 题目解 ...
- 程序员面试题精选100题(17)-把字符串转换成整数[算法]
题目:输入一个表示整数的字符串,把该字符串转换成整数并输出.例如输入字符串"345",则输出整数345. 分析:这道题尽管不是很难,学过C/C++语言一般都能实现基本功能,但不同程 ...
- 【算法】剑指 Offer 67. 把字符串转换成整数
1.概述 写一个函数 StrToInt,实现把字符串转换成整数这个功能.不能使用 atoi 或者其他类似的库函数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当 ...
- 面试题67. 把字符串转换成整数
题目 写一个函数 StrToInt,实现把字符串转换成整数这个功能.不能使用 atoi 或者其他类似的库函数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们 ...
- 程序员编程艺术第三十 三十一章 字符串转换成整数,通配符字符串匹配
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 第三十~ ...
- 字符串转换成整数,带通配符的字符串匹配
之前本一直想写写神经网络算法和EM算法,但写这两个算法实在需要大段大段的时间,而平时上班,周末则跑去北大教室自习看书(顺便以时间为序,说下过去半年看过的自觉还不错的数学史方面的书:<数理统计学简 ...
- 字符串转换成整数,字符串匹配问题
本文转自csdn大神v_JULY_v的博客 地址: http://blog.csdn.net/v_july_v/article/details/9024123 阅读心得:自己原先想得太天真了... 第 ...
- 程序员编程艺术第三十~三十一章:字符串转换成整数,通配符字符串匹配
第三十~三十一章:字符串转换成整数,带通配符的字符串匹配 前言 之前本一直想写写神经网络算法和EM算法,但写这两个算法实在需要大段大段的时间,而平时上班,周末则跑去北大教室自习看书(顺便以时间为序,说 ...
最新文章
- TypeScript 的 ?: 、两个问号、?. 分别是什么意思?
- Java并发必知必会第三弹:用积木讲解ABA原理
- OpenGL 纹理学习总结
- SQL必知必会——插入数据(十五)
- redis分布式锁-基本概念与实现方式对比
- LAMP架构介绍,MySQL、MariaDB介绍,MySQL安装
- 软件调试学习笔记(六)—— 硬件断点
- java groovyshell_在java中使用groovy怎么搞
- 35 FI配置-财务会计-应收账款和应付账款-为客户定义备选统驭科目
- 菜鸟裹裹升级退换货:全程可见让商家物流纠纷率降半
- XmlHttpRequest错误:Access-Control-Allow-Origin不允许使用原点null
- 最近帮客户优化的一个通讯应用
- 特征选择算法之Relief算法python实现
- Drools教程(基础篇)—— Eclipse插件安装
- dnf手游找不到服务器,DNF手游无法连接服务器怎么办 无法连接服务器解决详解...
- 美国恐怖故事第一季/全集American Horror Story 1全迅雷下载
- LiLeiHanMeiMei的隐式马尔可夫爱情
- 测试工程师需掌握的技能
- 2.12美团点评技术
- win7服务器如何还原系统教程,怎么快速处理win7系统架设本地服务器的还原技巧...