老师为什么我这里用强转的方法不行?

老师为什么我这里用强转的方法不行?

我用之前的课程中的强制方法去输出信息结果不行,这是为什么呢?请老师详细解答一下和解决方法!谢谢!

package com.imooc.set;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class CatTest {
 public static void main(String[] args) {
  //定义宠物猫对象
  Cat huahua=new Cat("花花",12,"英国短毛猫");
  Cat fanfan=new Cat("凡凡",3,"中华田园猫");
  //将宠物猫对象方法HashSet中
  Set set=new HashSet();
  set.add(huahua);
  set.add(fanfan);
  //显示宠物猫信息
  Iterator it=set.iterator();
  while(it.hasNext()) {
   System.out.println(((Cat)(it.next())).getName()+"    "+((Cat)(it.next())).getMonth()+"    "+((Cat)(it.next())).getSpecies());
  }
  
 }
}

http://img1.sycdn.imooc.com//climg/5b823e4600011aa714630642.jpg

我试过只留前两个输出就可以,就是只输出名字和年龄就可以,一输出第三个品种就会异常,这是为什么呢?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

it.next()方法不能在循环中多次调用,如果集合中有2条数据,没调用一次it.next()方法就取出一条数据,那么第三次再调用没有数据就出问题了。

所以代码改成:循环中的输出语句前加上:Cat cat=(Cat)it.next();然后输出时使用cat对象去调用方法。

祝学习愉快!

  • MasonM 提问者 #1
    不是调用一次it.next就取出一次数据吗,我集合里面有三条数据,怎么会到第三次取出的时候没有数据呢?
    2018-08-27 11:54:37
  • 好帮手慕珊 回复 提问者 MasonM #2
    你运行的是你上面贴的代码吧,里面只有两条数据呀
    2018-08-27 13:39:06
  • MasonM 提问者 回复 好帮手慕珊 #3
    我的意思是,我的Cat类不是有三个数据吗?名字年龄品种,一次next不是提取一个吗?
    2018-08-27 13:49:12
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师