老阅读题了,感觉这道题有点类似写业务接口。 首先,把情况划分一下: 非正常值,直接给 0(这个实际上可以划分到2的代码中) 可取正常值的情况 溢出的情况(上溢 && 下溢)  然后,分情况逐个写即可 class  Solution  { public  int  strToInt ( String  str)  { char [ ]  strArr =  str. trim ( ) . toCharArray ( ) ; if ( strArr. length ==  0 )  { return  0 ; } int  ans =  0 ; int  index =  0 ; boolean  isNegative =  false ; if  ( strArr[ 0 ]  ==  '-'  ||  strArr[ 0 ]  ==  '+' )  { index++ ; isNegative =  ( strArr[ 0 ]  ==  '-' ) ; } for  ( ;  index <  strArr. length &&  strArr[ index]  >=  '0'  &&  strArr[ index]  <=  '9' ;  index++ )  { if  ( isNegative)  { if  ( ans >  214748364  ||  ( ans ==  214748364  &&  strArr[ index]  >  '8' ) )  { return  - 2147483648 ; } } else  if  ( ans >  214748364  ||  ( ans ==  214748364  &&  strArr[ index]  >  '7' ) )  { return  2147483647 ; } ans *=  10 ; ans +=  strArr[ index]  -  '0' ; } if  ( isNegative)  { ans *=  - 1 ; } return  ans; } 
} 
class  Solution  { public  int  strToInt ( String  str)  { char [ ]  arr =  str. trim ( ) . toCharArray ( ) ; if ( arr. length ==  0 )  { return  0 ; } int  isNegative =  arr[ 0 ]  ==  '-'  ?  1  :  0 ; int  ans =  0 ; if ( arr[ 0 ]  >=  '0'  &&  arr[ 0 ]  <=  '9' )  { ans =  arr[ 0 ]  -  '0' ; } else  if ( arr[ 0 ]  !=  '+'  &&  arr[ 0 ]  !=  '-' )  { return  ans; } for ( int  i =  1 ;  i <  arr. length;  i++ )  { if ( arr[ i]  <  '0'  ||  arr[ i]  >  '9' )  { break ; } if ( ( ans >  214748364 )  ||  ( ans ==  214748364  &&  arr[ i]  -  '0'  >  7  +  isNegative) )  { ans =  isNegative ==  1  ?  Integer . MIN_VALUE :  Integer . MAX_VALUE; break ; } ans *=  10 ; ans +=  arr[ i]  -  '0' ; } return  isNegative ==  1  ?  - 1  *  ans :  ans; } 
}