为了账号安全,请及时绑定邮箱和手机立即绑定

一段代码求指导。

一段代码求指导。

qq_昼绽_0 2016-04-20 12:43:19
这是问题截选public void add(){  DianShu b= new DianShu();  HuaSe a= new HuaSe();  Card c = new Card(null,null);  int m=0;  for(int i=0;i<4;i++){   c.huaSe= new String(a.a.get(i));   for(int j=0;j<13;j++){    c.dianShu= new String(b.a.get(j));    l.add(c);        System.out.println(""+l.get(m).huaSe+":"+l.get(m).dianShu);    m++;   System.out.println("添加了卡牌:"+c.huaSe+":"+c.dianShu);   }      }// 问题就在下一行输出,改变l的get的方法的int 的value值,结果不变,都为方块K。  System.out.println(""+l.get(1).huaSe+":"+l.get(2).dianShu);// //  for(Card d  :l){//   System.out.println(""+d.huaSe+":"+c.dianShu);//   //  }//   }//完整的代码:http://www.imooc.com/opus/resource?opus_id=2911
查看完整描述

1 回答

已采纳
?
星箜下

TA贡献34条经验 获得超10个赞

当然就方块K了,因为你Card c = new Card() 这条语句在循环外, 也就是说只有这么一个Card,注意:List中存放的是对象的引用,如果引用相同,那add方法是不会再次执行的,它认为List中已经有了这个对象,不知道这么说你明白了没。

还有你这代码风格也得改改啊, 用拼音还不如直接用汉字命名变量呢,反正java又不是不支持。过来人的经验,我现在看我两年前写的代码真的是没法看,全是不明所以的汉语拼音.........

查看完整回答
反对 回复 2016-04-20
  • 星箜下
    星箜下
    翻了下JDK文档, List是允许e1.equals(e2)存在于其中,但没说e1 == e2 时能不能放进去,看你的代码好像是放进去了,没报错。可以看看List的大小是不是54,还是1。
  • qq_昼绽_0
    qq_昼绽_0
    List的大小是52(没大小王)
  • qq_昼绽_0
    qq_昼绽_0
    解决了你说的没错。 card放了52个。但每次更改时。52个都跟着变了。 十分感谢了。 这问题撩我两天了。
  • 1 回答
  • 0 关注
  • 1501 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信