字符串问题之 将证书字符串转成整数值

Posted toov5

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串问题之 将证书字符串转成整数值相关的知识,希望对你有一定的参考价值。

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

  str="123"

整体思路:

 首先判断这个字符串的合法性

 然后开始遍历

   遍历时候一定要注意了:

   32位整型,负数的绝对值 大于 整数的 绝对值 范围

    遍历的 str=res*10+cur    

    重点在于遍历的过程中就判断是否溢出问题:

        如果在 res加上cur之前,发现res已经小于minq,那么res加上cur一定会溢出

       如果在 res加上cur之前,发现res已经等于minq,但又发现cur小于minr,那么当res加上cur之后一定会溢出

 

最后根据posi决定返回值 ,同时考虑溢出的问题。

 

上代码:

package TT;

public class Test3 {
 
    public static boolean isValid(char[] chas){
        if(chas[0]==‘-‘ && (chas[1]<‘0‘||chas[1]>‘9‘)){
            return false;
        }
        
        if(chas[0]==‘-‘&&(chas.length==1 ||chas[1]==‘0‘)){
            return false;
        }
        if(chas[0]==‘0‘&&chas.length>1){
            return false;
        }
        
        for(int i = 1; i<chas.length; i++){
            
            if(chas[i]<‘0‘||chas[i]>‘9‘){
                return false;
            }
            
        }
        return true;
    }
     
    
    
    public static int convert(String str){
        
        if(str==null || str.equals(" ")){
            return 0;
        }
        
        char[] chas = str.toCharArray();
        if(!isValid(chas)){
            return 0;
        }
        
        boolean posi = chas[0] ==‘-‘ ? false :true;
        int minq = Integer.MIN_VALUE / 10;
        int minr = Integer.MIN_VALUE % 10;
        int res = 0;
        int cur = 0;
        for(int i = posi ? 0 : 1; i<chas.length; i++){
            
            cur = ‘0‘-chas[i];
            if((res<minq) || (res==minq && cur<minr)){
                return 0;
            }
            res = res*10+cur;
            
            
        }
        
        if(posi && res == Integer.MIN_VALUE){
            return 0;
        }
        return posi ? -res : res;
    }
    
    
    public static void main(String[] args){
        
        String str = "-1234";
        int a = convert(str);
        System.out.println(a);
        
    }
    
    
    
    
    
    
}

 

以上是关于字符串问题之 将证书字符串转成整数值的主要内容,如果未能解决你的问题,请参考以下文章

字符串转成整型(int)

整型,浮点型,字符串型相关用处

PHP当中如何将数组当中的字符串数据类型转化为数值类型?

delphi中类型转换如把一个字符串转成整型,这个装换过程执行了啥操作呢?有点不能理解

字符串知识储备

编写一个字符串排序程序,对一个字符串的数值进行从小到大的排序,要求使用包装类对数值类型的字符串转换成整型进行排序