阅读以下说明和Java程序,填补代码中的空缺(1)~(6),将解答填入答题纸的对应栏内。 【说明】 很多依托扑克牌进行的游戏都要先洗牌。下面的Java代码运行时先生成一副扑克牌,洗牌后再按顺序打印每张牌的点数和花色。 [Java代码] im

admin2016-05-11  50

问题 阅读以下说明和Java程序,填补代码中的空缺(1)~(6),将解答填入答题纸的对应栏内。
【说明】
    很多依托扑克牌进行的游戏都要先洗牌。下面的Java代码运行时先生成一副扑克牌,洗牌后再按顺序打印每张牌的点数和花色。
[Java代码]
    import java.uti1.List;
    import java.uti1.Arrays;
    import java.uti1.Collections;
    clasS Card{//扑克牌类
    publiC StatiC enum Face{Ace t Deuce , Three , Four , Five , Six,
    Seven,Eight,Nine,Ten,Jack,Queen,King);    //枚举牌点
    public static enum Suit(Clubs,Diamonds,Hearts,Spades};//枚举花色
    private final Face face ;
    private final Suit suit;
    public Card(Face face,Suit suit){
    (1)  face=face;
    (2)  suit=suit;
    }
    public Face getFace(){  return face;   }
public suit qetSLlit()  {  return suit;    }
    public String getCard()(    //返回String来表示一张牌
    return String.format(“%S,%S”,face,suit);
       }
    }
    //牌桌类
    clas S DeckOfCards{
    private Listlist;    //声明List以存储牌
    public DeckOfCards()  {    //初始化牌桌并进行洗牌
    Card[]deck=new Card[52];
    int count=0;    //牌数
    //用Card对象填充牌桌
    for(Card.Suit suit:Card.Suit.values()){
    for(Card.Face face:Card.Face.values()){
    (3)  =new Card(face,suit);
       }
    }
    list=Arrays.asList(deck);
    Collections.shuffle(list);    //洗牌
    }
    public void printCards()
    {
    //按4列显示52张牌
    for(int i=0;i<list.Size();i++)
    System.out.printf(”%一19s%s”,list.  (4)  ,
    ((i+1)%4==0)?“\n”:"");
      }
    }
    public class Dealer{
    public static void main(String[]args)  {
    DeckOfCards player=  (5)  ;
    (6)  printCards();
      }
    }

选项

答案(1)this. (2)this. (3)deck[count++] 或等价表示 (4)get(i).getCard() (5)new DeckOfCards() (6)player.

解析 本题考查Java语言程序设计的能力,涉及类、对象、方法的定义和相关操作。要求考生根据给出的案例和代码说明,认真阅读,理清程序思路,然后完成题目。
    先考查题目说明。本题目中涉及到扑克牌、牌桌、玩家等类以及洗牌和按点数排序等操作。根据说明进行设计。
    Card类内定义了两个static枚举类型,Face枚举扑克牌点数,Suit枚举扑克牌花色。Card类有两个枚举类型的属性,face和suit,而且值不再变化,故用fina1修饰。
    在使用构造方法public Card(Face face,Suit suit)新建一个Card的对象时,所传入的参数指定face和suit这两个属性值。因为参数名称和属性名称相同,所以用this.前缀区分出当前对象。在类Card中包含方法getFace()和getSuit(),分别返回当前对象的face和suit属性值。getCard()方法返回String来表示一张牌,包括扑克牌点数和花色。
    牌桌类DeckOfCards包含持有Card类型元素的List类型对象的声明List,用以存储牌。List是JaVa中的一种集合接口,是Collection的子接口。构造方法中用Card对象填充牌桌并进行洗牌。先用Card对象填充牌桌,即创建52个Card对象加入deck数组,表示牌桌上一副牌(52张)。然后洗牌,即将数组中的Card对象根据花色和点数随机排列,使用集合工具类Collections中的shuffie方法,对以Ifist类型表示的deck数组进行随机排列。Collections是Java,集合框架中两个主要工具类之一,用以进行集合有关的操作。
    printCards()方法将所有Card对象打印出来,按4列显示52张牌。每张拍的打印用list.get(i)获得list表示的deck中的第i个Card对象,然后进一步调用此对象的getCard()方法,得到String表示的当前一张牌。
    玩家类中包括启动发牌洗牌等操作,主入口方法main中实现创建牌桌对象,并调用按4列显示52张牌。在main()中,先初始化DeckOfCards类的对象player,即生成一个牌桌:
    DeckOfCards  player  =  new DeckOfCards();
    并发牌,即调用player的printCards()方法,实现按4列显示52张牌打印一副扑克牌中每张牌的点数和花色。在printCards()方法体内部,用list调用每个数组元素,并为每个数组元素调用getCard()返回当前对象所表示一张牌的花色和点数。用格式化方法进行打印,即:
    System.out.printf(  “%一19s%s”,  list.  get(  i  ).getCard(),  (  (  i  +1  )  %  4  ==0  )  ?  “\n”  :  “”  );
因此,空(1)和(2)需要表示当前对象的this.;空(3)需要牌桌上纸牌对象,并将数组元素下标加1,即数组元素deck[count++];空(4)也需要用list对象获得纸牌对象的字符串表示,即list.后的get(i)-getCard();空(5)处为创建:DeckOfCards类的对象指针player的new DeckOfCards();空(6)需要用对象player调用打印所有纸牌的printCards()函数,即player。
转载请注明原文地址:https://jikaoti.com/ti/GHW7FFFM
0

最新回复(0)