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

来源:7-1 简易扑克牌游戏

慕粉4078529

2016-12-14 23:53

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回答

  • JUST_4_IT
    2016-12-15 11:51:44
    已采纳

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

    慕粉4078...

    嗯,对的,谢啦

    2016-12-15 18:16:21

    共 1 条回复 >

  • JUST_4_IT
    2016-12-15 11:54:51

    http://img.mukewang.com/585213fb0001f8fe04320328.jpg就这样!

  • JUST_4_IT
    2016-12-15 09:27:39

    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://img.mukewang.com/5851f1850001f48304650339.jpg

    慕粉4078...

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

    2016-12-15 09:46:18

    共 1 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409777 学习 · 4339 问题

查看课程

相似问题