虽然结果不全,但我觉得似乎合理 后续再检查一下
如何将字符数字转化为真正的是数字
* 1——s.charAt(count) 转化为字符
* 2——Integer.valueOf(s.charAt(count) 将字符转化为Ascll码
* 3——Integer.valueOf(s.charAt(count)-48 减去最小值
/**
* @author #Description Test
* #Date: 2021/10/18 16:54
* 如何将字符数字转化为真正的是数字
* 1——s.charAt(count) 转化为字符
* 2——Integer.valueOf(s.charAt(count) 将字符转化为Ascll码
* 3——Integer.valueOf(s.charAt(count)-48 减去最小值
*
* 到这里的时候如果超出最大值会变为一个不确定的值。不知如何解决
*/
public class Test {
public static void main(String[] args) {
String s="0012";//
int ans=0;
int count=0;
boolean flag=true;
boolean pre=true;
while(count<s.length()){
//if((s.charAt(count)==' '||s.charAt(count)=='+'||s.charAt(count)=='-')&&pre){//如果前面一些是空格 +-进入
if((s.charAt(count)==' '||s.charAt(count)=='+'||s.charAt(count)=='-')&&pre){//如果前面一些是空格 +-进入
if (s.charAt(count)=='+') flag=true;
if (s.charAt(count)=='-') flag=false;
++count;
continue;
}else {
pre=false;
}
if (s.charAt(count)>=48&&s.charAt(count)<=57){//如果是个数字
if((ans*10+Integer.valueOf(s.charAt(count)-48))>Integer.MAX_VALUE/10){//溢出的话
ans=Integer.MAX_VALUE+1;
break;
}
ans=ans*10+Integer.valueOf(s.charAt(count)-48);//赋值
++count;//后移一位
continue;
}else {//后置如何解决
break;
}
}
if(flag==false){
ans=-1*ans;
}
System.out.println(ans);
}
public static int minMax(int ans){
if (ans>(Math.pow(2,31)-1)){
ans=(int)Math.pow(2,31)-1;
}
if (ans<-(Math.pow(2,31))){
ans=(int)(Math.pow(-2,31));
}
return ans;
}
}