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

请问这段代码为什么会这样输出?

public class PaiTest {
 
 private List<Card> cardList;
 
 public PaiTest(){
  
  this.cardList = new ArrayList<Card>();
 }
 public void purcard(){
  
  String[] sh= {"方片","黑桃","红桃","梅花"};
  for(int i=0;i<4;i++){
   Card cars = new Card();
   cars.setShape(sh[i]);
  
  for( int j=2;j<13;j++){
   System.out.println("j的值:"+j);
   cars.setId(j+"");
   System.out.println("添加了卡牌:"+cars.getShape()+cars.getId());
   cardList.add(cars);
  }
  }
  for(Card card:cardList)
   System.out.println("输出卡牌:"+card.getShape()+"   "+card.getId());
 }
 public static void main(String[] args) {
  PaiTest pt = new PaiTest();
  pt.purcard();
  
 }
}

输出卡牌:方片   12
输出卡牌:方片   12
输出卡牌:方片   12
输出卡牌:方片   12
输出卡牌:方片   12
输出卡牌:方片   12
输出卡牌:方片   12
输出卡牌:方片   12
输出卡牌:方片   12
输出卡牌:方片   12
输出卡牌:方片   12
输出卡牌:黑桃   12
输出卡牌:黑桃   12
输出卡牌:黑桃   12
输出卡牌:黑桃   12
输出卡牌:黑桃   12
输出卡牌:黑桃   12
输出卡牌:黑桃   12
输出卡牌:黑桃   12
输出卡牌:黑桃   12

正在回答

3 回答

sorry,原来问题在这, Card cars = new Card();创建对象要放到循环外面,不然每次循环都是创建一个新对象,那么在最后遍历的时候也就只有最后添加的“”12“”了,就这样!

0 回复 有任何疑惑可以回复我~
#1

慕粉4078529 提问者

嗯,对的,谢啦
2016-12-15 回复 有任何疑惑可以回复我~

http://img1.sycdn.imooc.com//585213fb0001f8fe04320328.jpg就这样!

0 回复 有任何疑惑可以回复我~

public void purcard(){
  
  String[] sh= {"方片","黑桃","红桃","梅花"};
  for(int i=0;i<4;i++){
   Card cars = new Card();
   cars.setShape(sh[i]);
  
  for( int j=2;j<13;j++){
   System.out.println("j的值:"+j);
   cars.setId(j+"");
   System.out.println("添加了卡牌:"+cars.getShape()+cars.getId());
   cardList.add(cars);
  }
  }
  for(Card card:cardList)
   System.out.println("输出卡牌:"+card.getShape()+"   "+card.getId());
 }

在这个purcard()方法中的两个for循环,你的大括号位置不对,我猜你是拷贝程序的时候没有注意粘贴位置,http://img1.sycdn.imooc.com//5851f1850001f48304650339.jpg

0 回复 有任何疑惑可以回复我~
#1

慕粉4078529 提问者

大括号的位置没有错吧?这是循环嵌套,大循环是输出花色,然后在指定的花色上添加牌的序号,也就是下面这条语句: cars.setId(j+""); System.out.println("添加了卡牌:"+cars.getShape()+cars.getId()); 明明添加了每张牌,可最后怎么都变成大小为12的牌了?
2016-12-15 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请问这段代码为什么会这样输出?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信