如何使用InetAddress创建循环?

时间:2013-10-01 21:47:16

标签: java

我想创建一个循环,用于使用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]);
        }
    }
    }
    /*********************************/

1 个答案:

答案 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个阵列。