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_INT
if(sign > 0 && (n > Max_INT/10 || (n == Max_INT/10 && c > Max_INT%10))){
n = Max_INT;
break;
}
//当输入字符串表示数为负数,且小于Min_INT
if(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
请输入一个由数字组成的字符串:
整数result = 2147483647
请输入一个由数字组成的字符串:
-10000000000
整数result = -2147483648
Java实现字符串转换成整数的更多相关文章
- Java将ip字符串转换成整数的代码
下面代码是关于Java将ip字符串转换成整数的代码,希望对各位有较大用途. public class IpUtil { public static int Ip2Int(String strIp){ ...
- 【Java】 剑指offer(67) 把字符串转换成整数
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 请你写一个函数StrToInt,实现把字符串转换成整数这个功能 ...
- 剑指 Offer 67. 把字符串转换成整数 + 字符串
剑指 Offer 67. 把字符串转换成整数 Offer_67 题目描述 题解分析 java代码 package com.walegarrett.offer; /** * @Author WaleGa ...
- 力扣 - 剑指 Offer 67. 把字符串转换成整数
题目 剑指 Offer 67. 把字符串转换成整数 思路1 根据题意,要解决这题,首先要判断的条件有: 不包括首位空格 第一位必须为:+.-.数字三者其一,否则不合法 数字必须连续的,如果遇到非数字, ...
- 17.把字符串转换成整数[atoi]
[题目] 把字符串转换成整数,需要考虑字符串有效性. [代码] C++ Code 123456789101112131415161718192021222324252627282930313233 ...
- android112 jni 把java的字符串转换成c的字符串,数组处理
package com.itheima.charencode; import android.os.Bundle; import android.app.Activity; import androi ...
- 《剑指offer》第六十七题(把字符串转换成整数)
// 面试题67:把字符串转换成整数 // 题目:请你写一个函数StrToInt,实现把字符串转换成整数这个功能.当然,不 // 能使用atoi或者其他类似的库函数. #include <ios ...
- Python使用函数实现把字符串转换成整数
需求:假设Python没有提供内置函数int如果使用函数方式实现把一串字符串转换成整数例如把字符串‘12345‘转换成整数12345 思路 1,字符串也是序列可以使用map函数处理分割成一个列表 2, ...
- [Leetcode] String to integer atoi 字符串转换成整数
Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. ...
随机推荐
- 2018-06-19 Javascript 基础2
js变量类型测试:typeof()->五种 (number,string,boolean,object,undefined): instanceof->检查某个对象是否是某个构造器产生的 ...
- 不卸载Nginx隐藏版本号
[修改配置文件](不卸载Nginx隐藏版本号,直接修改配置文件) Linux环境: [root@localhost nginx-1.16.1]# curl -I http://10.56.1.115 ...
- webpack配置篇
开发环境(development)和生产环境(production)的构建目标差异很大.在开发环境中,我们需要具有强大的.具有实时重新加载(live reloading)或热模块替换(hot modu ...
- @vue/cli 4.0.5 学习记录
1. Vue CLI (@vue/cli) 是一个全局安装的 npm 包,提供了终端里的 vue 命令.Vue CLI 插件的名字以 @vue/cli-plugin- (内建插件) 或 vue-cli ...
- Rabbit的字符串 字符串最小表示法
Rabbit的字符串 #include<bits/stdc++.h> using namespace std; ; char s[maxn]; int get_min_pos() { , ...
- 7.1 Go interface
7.1 Go interface 雨痕-Go语言笔记 接口采用了duck type方式,在程序设计中是动态类型的一种风格 `当看到一只鸟走起来像鸭子.游泳起来像鸭子.叫起来也像鸭子,那么这只鸟就可以被 ...
- 王玉兰201771010128《面向对象与程序设计(Java)》第十一周学习总结
一:理论知识部分: (1)集合:集合(Collection或称为容器)是一种包含多个元素并提供对所包含元素操作方法的类,其包含的元素可以由同一类型的对象组成,也可以由不同类型的对象组成. A:集合类的 ...
- PAT-1056 Mice and Rice (分组决胜问题)
1056. Mice and Rice Mice and Rice is the name of a programming contest in which each programmer must ...
- poj1780欧拉回路
转载 #include<cstdio> #include<cstring> ; bool vis[N]; char ans[N]; int main() { int n; wh ...
- vue中template的三种写法
第一种(使用模板字符串)早期字符串拼接年代 <div id="app"></div> new Vue({ el: "#app", tem ...