猿问

一段代码求指导。

这是问题截选
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

qq_昼绽_0
浏览 1502回答 1
1回答

星箜下

当然就方块K了,因为你Card c = new Card() 这条语句在循环外, 也就是说只有这么一个Card,注意:List中存放的是对象的引用,如果引用相同,那add方法是不会再次执行的,它认为List中已经有了这个对象,不知道这么说你明白了没。还有你这代码风格也得改改啊, 用拼音还不如直接用汉字命名变量呢,反正java又不是不支持。过来人的经验,我现在看我两年前写的代码真的是没法看,全是不明所以的汉语拼音.........
随时随地看视频慕课网APP

相关分类

Java
我要回答