Java创建对象数组后的正确使用方法

对象数组的创建

我的小班这学期刚开始学java,有个小班今天写程序时出现问题来问我,关于输入英文输出中文翻译的程序。发生了创建对象数组后无法使用对象的情况。他创建了以下这样的对象数组;

WordEC[] dictny = new WordEC[10];    

WordEC类 如下

创建完成后,小班马上就想给对象赋值

于是

感觉一点问题也没有,创建对象,然后逐个赋值,没问题!不出意外的话意外发生了

报了个空指针异常,显示dictny[0]为空,不能调用setEng(String)方法。

 为啥呢?想必小班很郁闷,感觉一点问题也没有。问题就出在调用对象方法赋值得先有对象才能调用。而创建对象数组只是声明了10个WordEC对象并没有实例化对象。相当于做了十次以下操作:

WordEC test;//声明一个WordEC对象

这样并没有实例化一个对象,在内存上也没有创建空间;

正确做法:

dictny[0] = new WordEC();

但是每个这样赋值就很麻烦,所以可以用for循环实例化每个对象。

for (int i = 0; i < dictny.length; i++) {
    dictny[i] = new WordEC();
}

实例化之后再为每个对象的属性赋值,这样也很麻烦,还可以利用for循环遍历英文数组,和中文数组(要求中英文下标一一对应),可以做如下改动

先创建有参构造方法,利用有参构造方法给对象赋值,然后程序做如下改动

String[] eng = {"boy","girl"};
String[] chi = {"男孩","女孩"};
for(int i = 0; i < dictny.length; i++){
    dictny[i] = new WordEC(eng[i],chi[i]);
}

接着就是逻辑问题了,穷举判断每个对象的英文等于输入内容,则输出这个对象的中文,但是这种方法很慢,穷举在一些查询中是下策,不应优先考虑,map集合是解决这题的好方法,它具备不重复,快查询的优点,但是考虑到小班还没学map集合,这也是他能想到的最优方法了。

整理不易,如有错误问题欢迎一起讨论。

  • 13
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值