思路:
从左至右扫描字符串中的每个字符,把之前扫描得到的数字乘以10,再加上当前字符表示的数字。
注意要点:
(1)最好判断一下输入是否为空。
(2)如果字符串的第一个字符是‘-’号,最终得到的整数必为负整数。
(3)输入的字符串中不能含有不是数字的字符。
(4)输入的字符串不能太长,否则转换成整数后会导致整数溢出。
package com.sf;
import java.util.Scanner;
public class StringToInt {
public static int max = Integer.MAX_VALUE;
public static int min = 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
if(sign > 0 && (n > max/10 || (n == max/10 && c > max%10))){
n = max;
break;
}
//当输入字符串表示数为负数,且小于Min_INT
if(sign < 0 && (n + min/10 > 0 || (n + min/10 == 0 && c + min%10 > 0))){
n = min;
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);
}
}
原文作者:繁华
原文链接:https://blog.csdn.net/weixin_44833195/article/details/106371464