
java的一个错误,运行说:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at IP
//packagecn;publicclassIPParse{/*获取IP地址类型*/publicStringgetIPType(Stringip){if(isIP(ip...
//package cn;
public class IPParse{
/*获取IP地址类型*/
public String getIPType(String ip){
if(isIP(ip)){//是IP地址
int ipArray[]=getNumArray(ip);
int firtArrayNum=ipArray[0];
if(firtArrayNum>=0 && firtArrayNum<128 ) return ip+"是A类IP地址";
else if(firtArrayNum>=128 && firtArrayNum<192 ) return ip+"是B类IP地址";
else return ip+"是C类IP地址";
}
else return ip+"不是IP地址";
}
/*判断是否为IP地址*/
public boolean isIP(String ip){ //判断一个字符串是否为IP地址
boolean isPoint=ip.contains("."); //是否含有点“.”
if(isPoint){//是含有"."的数字字符串
int ipSegent[]=this.getNumArray(ip);//获取以“.”分割后的数字字符串对应的整数数组
int length= ipSegent.length;
if(ipSegent[0]==65535) {//输入的不是数字字符串
return false;}
else if(length!=4 && length!=6) {//输入的数字串不符合IPV4、6的位数要求
return false;}
else {//符合IP位数要求
int max=0;
int min=0;
for(int i=0;i<length;i++){
if(i==0) { //if 2 start
max=ipSegent[0];
min=max;
} //if end
else{
if(ipSegent[i]>max) max=ipSegent[i];
if(ipSegent[i]<min) min=ipSegent[i];
}//else end
}//for end
if(max>255 || min<0) return false; //不满足各为整数的取值范围
else return true; //是IP地址
}
}
else return false;//不含有点“.”的字符串
}
/*获得一个含有点“.”分割的数字字符串对应的数字数组*/
public int[] getNumArray(String strNum){ //将一个含有"."的数字字符串从“.”分割为数字数组并返回
String numSegent[]=strNum.split("\\.");
int length= numSegent.length;
int [] numArray=new int[length];
for(int i=0;i<length;i++){
try{
numArray[i]=new Integer(numSegent[i]).intValue();
}catch(NumberFormatException e){
int [] error={65535};
return error;}
}
return numArray;
}
public static void main(String[] args){
IPParse ipParse=new IPParse();//创建IP地址类型解析对象
String ip=args[0]; //获取主函数参数
System.out.println(ipParse.getIPType(ip)); //输出输入的字符串的解析结果
}
} 展开
public class IPParse{
/*获取IP地址类型*/
public String getIPType(String ip){
if(isIP(ip)){//是IP地址
int ipArray[]=getNumArray(ip);
int firtArrayNum=ipArray[0];
if(firtArrayNum>=0 && firtArrayNum<128 ) return ip+"是A类IP地址";
else if(firtArrayNum>=128 && firtArrayNum<192 ) return ip+"是B类IP地址";
else return ip+"是C类IP地址";
}
else return ip+"不是IP地址";
}
/*判断是否为IP地址*/
public boolean isIP(String ip){ //判断一个字符串是否为IP地址
boolean isPoint=ip.contains("."); //是否含有点“.”
if(isPoint){//是含有"."的数字字符串
int ipSegent[]=this.getNumArray(ip);//获取以“.”分割后的数字字符串对应的整数数组
int length= ipSegent.length;
if(ipSegent[0]==65535) {//输入的不是数字字符串
return false;}
else if(length!=4 && length!=6) {//输入的数字串不符合IPV4、6的位数要求
return false;}
else {//符合IP位数要求
int max=0;
int min=0;
for(int i=0;i<length;i++){
if(i==0) { //if 2 start
max=ipSegent[0];
min=max;
} //if end
else{
if(ipSegent[i]>max) max=ipSegent[i];
if(ipSegent[i]<min) min=ipSegent[i];
}//else end
}//for end
if(max>255 || min<0) return false; //不满足各为整数的取值范围
else return true; //是IP地址
}
}
else return false;//不含有点“.”的字符串
}
/*获得一个含有点“.”分割的数字字符串对应的数字数组*/
public int[] getNumArray(String strNum){ //将一个含有"."的数字字符串从“.”分割为数字数组并返回
String numSegent[]=strNum.split("\\.");
int length= numSegent.length;
int [] numArray=new int[length];
for(int i=0;i<length;i++){
try{
numArray[i]=new Integer(numSegent[i]).intValue();
}catch(NumberFormatException e){
int [] error={65535};
return error;}
}
return numArray;
}
public static void main(String[] args){
IPParse ipParse=new IPParse();//创建IP地址类型解析对象
String ip=args[0]; //获取主函数参数
System.out.println(ipParse.getIPType(ip)); //输出输入的字符串的解析结果
}
} 展开
7个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询