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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 疯狂程序 中级黑马   /  2013-4-3 15:47  /  2040 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 疯狂程序 于 2013-4-4 17:14 编辑



为什么求解啊啊

7 个回复

倒序浏览
你的aa数组里面没放有对象,aa[3]是null,不能调用setX(int x) 这个方法。你要放一个对象到aa[3]这个位置才可以如:aa[3]=new Person();aa[3].setX(5);这样才会不抛指针异常

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
楼上正解,创建的是Person类型的空数组,如果你这样搞(赋初值),就没问题
  1. package cty.show;

  2. public class Temp {

  3.         public static void main(String[] args) {

  4.                 Person[] p = new Person[]{new Person(),new Person()};
  5.                 p[0].setX(5);
  6.                
  7.                 System.out.println(p[0].getX());
  8.         }
  9. }

  10. class Person
  11. {
  12.         public int x;
  13.         int y;
  14.         public void setX(int x)
  15.         {
  16.                 this.x = x;
  17.         }
  18.        
  19.         public int getX()
  20.         {
  21.                 return x;
  22.         }
  23. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
楼上两位解释的非常到位呢,学习咧!
回复 使用道具 举报
无奈№追夜 发表于 2013-4-3 16:31
你的aa数组里面没放有对象,aa[3]是null,不能调用setX(int x) 这个方法。你要放一个对象到aa[3]这个位置才 ...

报的是空指针异常错误,你建立一个Person类的数组,给他定义了长度,但是你却没有给他赋对象,
所以会报错空指针异常,还有就是你都没有实力化怎么可以在主函数中调用非静态的setx()方法呢,
正确的如下:
aa[3]=new Person();
aa[3].setX();

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
学习了!
回复 使用道具 举报
对象数组初始的时候默认赋值为null,所以,你没有给aa[3]实际赋值为一个Person对象,实际用的是null对象,就报错了{:soso_e144:}
回复 使用道具 举报
若还有问题,继续追问; 没有的话,尽量及时将帖子分类改成【已解决】~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马