我想创建一个循环,用于使用Inetaddress类型的base mechanin的IP地址ping局域网中的PC。我试图以整数形式转换它,但是发生了错误。
这是我的代码;错误在第17行,错误为Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at practice.trying.main(trying.java:27)
/**************************/
import java.net.*;
import java.io.DataInputStream;
import java.io.IOException;
import java.util.*;
public class trying {
public static void main(String[] args) throws IOException
{
DataInputStream in = new DataInputStream(System.in);
String s ;
int[] ia=new int[4] ;
System.out.println("enter the ip ");
s=in.readLine();
System.out.println(s);
String st1[]=s.split(".");
for(int i=0;i<=4;i++)
{
ia[i]=Integer.parseInt(st1[i]);
System.out.println(ia[i]);
}
}
}
/*********************************/
答案 0 :(得分:1)
无论您在标准输出中输入什么内容,都
String st1[]=s.split(".");
将生成一个大小为0的数组。所以
Integer.parseInt(st1[i]);
任何i
值的都会产生ArrayIndexOutOfBoundsException
。原因是String#split(String)
需要正则表达式模式。此外,它不包含任何空字符串。
.
是正则表达式中的特殊字符,表示任何字符。所以你试图分裂任何角色并丢弃空字符串。所以你最终没有元素。
您想要使用
String st1[]=s.split("\\.");
以便在正则表达式中转义.
特殊字符。
另请注意您的for循环
for(int i=0;i<=4;i++)
当ArrayIndexOutOfBoundsException
到达i
时,还会提供4
。请记住,数组索引从0开始。您需要
for(int i = 0; i < 4; i++)
或更好
for(int i = 0; i < ia.length; i++)
你正在使用一个循环而是2个阵列。