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)); //输出输入的字符串的解析结果
}
}
展开
 我来答
百度网友a632b66151
推荐于2017-09-23 · TA获得超过1648个赞
知道小有建树答主
回答量:636
采纳率:25%
帮助的人:248万
展开全部
public static void main(String[] args) {
IPParse ipParse = new IPParse();// 创建IP地址类型解析对象
// String ip=args[0]; //获取主函数参数(args是个空数组,你对也就没有所谓的args[0],肯定要出边界的)
String ip ="192.168.254.1"; // 获取主函数参数(这样试试就明白了)
System.out.println(ipParse.getIPType(ip)); // 输出输入的字符串的解析结果
}
更多追问追答
追问
用cmd还是不行,eclipse可以
追答
只能说不是程序的错。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2012-05-09 · TA获得超过890个赞
知道小有建树答主
回答量:318
采纳率:0%
帮助的人:430万
展开全部
main方法里面String ip=args[0];
这里的args你在运行java程序的时候传递参数了么?

你直接改成String ip = "192.168.1.1"; 看一下。
更多追问追答
追问
不行,有错
追答
//package cn;
public class IPParse {
// ......

public static void main(String[] args) {
IPParse ipParse = new IPParse();// 创建IP地址类型解析对象
String ip = "192.168.1.1"; // 获取主函数参数
System.out.println(ipParse.getIPType(ip)); // 输出输入的字符串的解析结果
}
}

为什么我的没有错呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
味洋扛590
2012-05-09 · TA获得超过1647个赞
知道小有建树答主
回答量:1640
采纳率:100%
帮助的人:821万
展开全部
索引超出范围异常,一般出现这种是对一个数组或者集合一边遍历一边删除。看下是第几行的错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
green3802
2012-05-09
知道答主
回答量:11
采纳率:0%
帮助的人:4.2万
展开全部
判断ip类型这种东西,用几个正则表达式就搞定了,不用写这复杂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yxj120600
2012-05-09 · TA获得超过246个赞
知道小有建树答主
回答量:471
采纳率:0%
帮助的人:275万
展开全部
索引超出范围异常。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式