A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 燕国庆 高级黑马   /  2012-11-27 09:41  /  1298 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 燕国庆 于 2012-11-27 12:24 编辑

import java.net.*;
class IpDemo
{   
  static InetAddress[]ia;

public static void main(String[] args) throws Exception
{  /*
  InetAddress i=InetAddress.getLocalHost();
  System.out.println(i.toString());
  System.out.println(i.getHostAddress());
  System.out.println(i.getHostName());
  */
  InetAddress[]ia=InetAddress.getAllByName("www.baidu.com");
  getIp(ia.length);
  
}
public static void getIp(int len)
{
  for (int x=0;x<len;x++)
  {
   System.out.println("百度:————"+ia[x].toString());
  }
}
}
为什么不能讲数组里的若干个百度主机的IP地址输出那,编译能通过可是在执行的时候就会出现下面的错误 (此时要求你的电脑是连接网络的情况否则是不能获取到百度IP的)

QQ截图20121127093427.png (2.13 KB, 下载次数: 13)

QQ截图20121127093427.png

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

5 个回复

倒序浏览
本帖最后由 werewolf 于 2012-11-27 12:18 编辑

InetAddress[]ia=InetAddress.getAllByName("www.baidu.com");
此句有问题,此句相当于又重新定义了一个InetAddress[]类型的变量,变量名为ia,
而此ia为main方法中的局部变量,只在main方法中有效;
getIP()中使用的ia为全局静态变量ia,初始值为null。
因此编译通过,而运行时,调用ia[x].toString()时报空指针异常

将此句直接改为  ia = InetAddress.getAllByName("www.baidu.com");   即可。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
IP的查询应该是拿着“www.baidu.com”到你的本机去查找是否有相对应的IP,如果有,就可以取到,如果没有才会到网络上查找百度的IP。你可以在host文件里面添加百度的映射ip,这样应该不会报错。你可以试下。若说错了,还希望指正,谢谢!
回复 使用道具 举报
werewolf 发表于 2012-11-27 12:13
InetAddress[]ia=InetAddress.getAllByName("www.baidu.com");
此句有问题,此句相当于又重新定义了一个In ...

哦,是有问题,谢谢
回复 使用道具 举报
  1. class Demo         
  2. {
  3.          static InetAddress[]ia;

  4.          public static void main(String[] args) throws Exception
  5.          {  /*
  6.            InetAddress i=InetAddress.getLocalHost();
  7.            System.out.println(i.toString());
  8.            System.out.println(i.getHostAddress());
  9.            System.out.println(i.getHostName());
  10.            */
  11.            ia=InetAddress.getAllByName("www.baidu.com");
  12.            getIp(ia);
  13.           
  14.          }
  15.          public static void getIp(InetAddress[] arr)
  16.          {
  17.            for (int x=0;x<arr.length;x++)
  18.            {
  19.             System.out.println("百度IP:"+ia[x].toString());
  20.            }
  21.          }
  22. }
复制代码
我觉得你改成这样更好一点

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
werewolf 发表于 2012-11-27 12:30
我觉得你改成这样更好一点

哈哈哈是的,改过来了,有的时候有点小毛病怎么都看不出来,当别人一提醒就恍然大悟了,谢谢大家的帮忙,谢谢你们了!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马