将整数字符串转成整数值

来源:互联网 发布:单片机种类 编辑:程序博客网 时间:2024/05/29 08:49

    给定一个字符串s,如果字符串符合日常书写的整数形式,并且属于32位整数的范围,返回str所代表的整数值,否则返回0.

   比如:

  s="123",则返回123.

  s="0123",则返回0.

  s="-123",则返回-123.

  s="-0",返回0.

  s="-",返回0.

 s="123a4",返回0.

   首先,需要判断字符串中是否有非法字符,具体代码如下:

public static boolean isValid(String s){
//第一个既不是负号,也不是数字的情况
if(s.charAt(0)!='-'&&(s.charAt(0)<'0'||s.charAt(0)>'9')){
return false;
}
//第一个是负号,但是整个字符串的长度只有1,或者负号后面跟个0的情况
if(s.charAt(0)=='-'&&(s.length()==1||s.charAt(1)=='0')){
return false;
}
//以0开头,而且整个字符串的长度大约0
if(s.charAt(0)=='0'&&s.length()>1){
return false;
}
//从第二个开始依次遍历字符串,一旦出现不是数字的情况立即返回
for(int i=1;i<s.length();i++){
if(s.charAt(i)<'0'||s.charAt(i)>'9'){
return false;
}
}
return true;
}


接下来进行字符转数字操作,具体代码如下:

public static int fun(String s){
//字符串为空或者字符串的长度为0
if(s==null||s.length()==0)
                     return 0;
//字符串中存在不合法的字符
if(isValid(s)==false)
                return 0;
//接下来处理第一个字符是否为负号的情况。。。。。。。
int num=0;
//以负号开头的情况
if(s.charAt(0)=='-'){
for(int i=1;i<s.length();i++){
num+=s.charAt(i)-'0';
num*=10;
}
num=num*(-1);//最后计算完成后变成负数
}
else{
for(int i=0;i<s.length();i++){
num+=s.charAt(i)-'0';
num*=10;
}
}
return num/10;//最后一次要除以10
}


最后测试输出:

public static void main(String[] args) {
// TODO 自动生成的方法存根


String s="-12340";

                //String s="1234"
System.out.println(fun(s));
}


0 0