剑指offer-第七章面试案例1(字符串转换为整型)

//将字符串转换为整型
//思路:特殊的输入测试:
//1,考虑字符串是否为空。2.字符串问空的时候的返回0,和真实的返回0直键的区别。3,字符串中出现0~9的字符处理
//4.字符串中出现*,¥等一下奇怪的符号时候的情况。
//功能测试:
//正数,负数和零
//边界测试:最大的正数,最小的负数。
public class StrToInt {
      public boolean g_InVaild=false;
    
      public int strToInt(String s){
          boolean minus=false;
          int result=0;
          int i=0;
          int len=s.length();
          if(s==null)
              return 0;
          if(s.length()==0)
              return 0;
          //int n=Integer.parseInt(s);//如果不让调用ParseInt.那么怎么写。
          char firstChar=s.charAt(0);
          if(firstChar<'0'){
               if(firstChar=='-'){
                  minus=true;
              }
              else if(firstChar!='+')
                  throw new NumberFormatException();
              if(len==1)
                  throw new NumberFormatException();
              i++;
          }
          while(i<len){
              if(s.charAt(i)>='0'&&s.charAt(i)<='9'){
                  int flag=minus?-1:1;
                  result=result*10+flag*(s.charAt(i)-'0');
                  if(minus&&result>Integer.MAX_VALUE||!minus&&result<Integer.MIN_VALUE){
                      result=0;
                      break;
                  }
                 
                  i++;
              }
              else{
                  result=0;
                  break;
              }
              
          }
          if(i==len){
              g_InVaild=true;
              
          }
          return result;
        
          
      }
    
    public static void main(String[] args)
      {
          String s="123";
          StrToInt strInt=new StrToInt();
          int n=strInt.strToInt(s);
          System.out.println(n);
      }
}

 

posted @ 2015-09-01 11:46  lisahappy  阅读(441)  评论(0编辑  收藏  举报