翻转整数

package algorithm;

import org.junit.Test;

//String to Integer (atoi) (字符串转成整数)
/*
 *字符串转整数
 *想所有的输入,算输出
 * */
public class StringToInt {
    
    public int atoi(String str){
        
        try{
            if(str==null||str.equals("")){
                //throw new NumberFormatException("非法输入");    
                return 0;
            }
            
            //如果开始为空格,则查找第一个不是空格的字符
            int start=0;
            boolean positive=true; //默认为正数
            
            //去掉前面的空格
            char cr=str.charAt(start); //字符
            while(cr==' '){
                start++;
                if(start>=str.length()){
                    System.out.println("全是空格");
                    return 0;
                }
                cr=str.charAt(start);
            }
            cr=str.charAt(start);//第一个非空字符
            if(cr=='-'||cr=='+'){
                if(cr=='-'){
                    positive=false;
                }
                start++;
            }
            //下面为数字
            cr=str.charAt(start);
            if(cr>='0'&&cr<='9'){
                return realInt(str,start,positive);
            }else{ //输入不合法
                throw new NumberFormatException("输入不合法,数字不为0-9");
            }
            
            //System.out.println(cr);
            
            
            
            
        }catch(Exception e){
            e.printStackTrace();
        }
        return 0;
    }
    
    
    //字符串转数组,前面数字已经处理
    private int realInt(String str, int start, boolean positive) {
        System.out.println("start="+start);
        long result=0;
        while(start<str.length()&&str.charAt(start)>='0'&&str.charAt(start)<='9'){
            //(str.charAt(start)-'0') 才为数字 *************
            //如果直接为str.charAt(start),则无法为真实需要的数字
            result=result*10+(str.charAt(start)-'0'); 
            
            if(positive){//如果为正数
                if(result>Integer.MAX_VALUE){
                    return Integer.MAX_VALUE;
                }
            }else{
                if (-result < Integer.MIN_VALUE) {
                     return Integer.MIN_VALUE;
                 }
            }
            start++;
        }
        if(start==str.length()){//输入合法
            System.out.println("输入合法"+result);
            
            if(positive){//如果为正数
                return (int) result;
            }else{
                return (int) -result;
            }

        }else{
            
            System.out.println("输入非法"+str);
            return 0;
        }
        
    }

    @Test
    public void test1(){
        String tt="   +222";
        int result=new StringToInt().atoi(tt);
        if(result==222){
            System.out.println("匹配:"+result);
        }else{
            System.out.println("结果不匹配:"+result);
        }
    }
    @Test
     public void test2(){
        String tt="    -99";
        int result=new StringToInt().atoi(tt);
        
        if(result==0){
            System.out.println("检测正确:"+result);
        }else{
            System.out.println("检测不匹配:"+result);
        }
     }
    @Test
     public void test3(){
        String tt="99999999999999999999";
        int result=new StringToInt().atoi(tt);
        if(result==Integer.MAX_VALUE){
            System.out.println("匹配:"+result);
        }else{
            System.out.println("结果不匹配:"+result);
        }
     }
    
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        
    }

}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值