边界测试
无效输入
越界
public class StrToInt {
/**
* @param args
*/
public static int nflag=-1;//表示字符串无效
public static void main(String[] args) {
// TODO Auto-generated method stub
String s="-1234567891010";
strToInt(s);
}
private static void strToInt(String s) {
if(s==null) return;
int len = 0;
long num=0;
boolean minus=false;
if(s.charAt(0)=='+')
{
len++;
}
else if(s.charAt(0)=='-')
{
len++;
minus=true;
}
num=Invert(s,len,minus);
System.out.println((int)num);
}
private static long Invert(String s, int len, boolean minus) {
long num=0;
int flag=minus?-1:1;
for(int i=len;i<s.length();i++)
{
if(s.charAt(i)>'0' && s.charAt(i)<'9')
{
num=num*10+flag*(s.charAt(i)-'0');
if(!minus && num>0x7FFFFFFF ||(minus&& num<0x80000000))
{
num=0;
break;//转成数字越界
}
}
else
{
num=0;//字符串不合法
break;
}
}
if(s!="")
{
nflag=0;//字符串有效
}
return num;
}
}