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. ...
随机推荐
- 12个让您震撼的Linux终端命令
以下快捷键很有用,可以节省你的时间: CTRL+U: 从光标处删除文本直到行首. CTRL+K: 从光标处删除文本直到行尾. CTRL+Y: 粘贴文本. CTRL+E: 将光标移动到行尾. CTRL+ ...
- vue上的简单轮播图
好久没写轮播图了,今天在vue上写了个超简单的,效果还ok. .moveLeft{position:relative;right:ZOOMpx;transition:all 1s;} 原理是滚动时利用 ...
- Angular第三方UI组件库------ionic
一.Angular UI组件库 ------------ionic 1. 官网:https://ionicframework.com 文档:https://ionicframework.com/d ...
- 【1-n】区间覆盖 TOJ4168+BZOJ1192
Xiao Ming is very interesting for array. He given a sorted positive integer array and an integer n. ...
- poj3177 无向连通图加多少条边变成边双连通图
Redundant Paths Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 15752 Accepted: 6609 ...
- CF820D Mister B and PR Shifts
题目链接:http://codeforces.com/problemset/problem/820/D 题目大意: 给出一个\(n\)元素数组\(p[]\),定义数组\(p[]\)的误差值为\(\su ...
- liunx tar 详解
tar [-cxtzjvfpPN] 文件与目录 .... 参数说明 -c: 建立一个压缩文件的指令参数 (crate的缩写): -x:解开一个压缩文件的参数指令: -t:查看tarfile里面的文件 ...
- jpype2
# -*- coding: utf-8 -*-# @Time : 2020/5/21 0:04# 从环境变量获取jvm虚拟机安装路径,若为None则获取默认路径import os import jpy ...
- Docker安装常见的应用与将本地镜像推送到阿里云
一.Docker安装常用的应用 1,docker安装mysql #拉取镜像mysql5.7 docker pull mysql:5.7 #启动容器(绑定对应的配置文件和日志,默认密码为123456) ...
- pyinstaller打包pyqt5,从入坑到填坑,详解
以上省略pyinstaller安装步骤,直入主题.先分享我的心路历程. 1.pyinstaller -F -i 1.ico UI_Main.py (先在CMD中 cd到 py文件对应的路径) 第一步打 ...