阅读以下说明和Java程序,填补代码中的空缺(1)~(6),将解答填入答题纸的对应栏内。
【说明】
很多依托扑克牌进行的游戏都要先洗牌。下面的Java代码运行时先生成一副扑克牌,洗牌后再按顺序打印每张牌的点数和花色。
【Java代码】
import iava.util.List;
import java.util.Arrays;
import java.util.Collections;
class Card { //扑克牌类
public static enum Face { Ace, Deuce, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jacky, 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 getSuit() { return suit; }
public String getCard() { //返回String来表示一张牌
return String.format( "%s, %s", face, suit );
}
}
//牌桌类
class DeckOfCards {
private List< Card > list; //声明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,而且值不再变化,故用final修饰。
在使用构造方法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中的shuffle方法,对以List类型表示的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.。
你可能感兴趣的试题
一台主机的IP地址为202.123.25.36,掩码为255.255.254.0。如果该主机需要在该网络进行直接广播,那么它应该使用的目的地址为( )
-
- A.202.123.25.0
- B.202.123.25.255
- C.202.123.24.0
- D.202.123.24.255
- 查看答案
在计算机系统的日常维护工作中,应当注意硬盘工作时不能__(2)__。另外,需要防范病毒,而__(3)__是不会被病毒感觉的。
-
- A.电子邮件
- B.硬盘
- C.U盘
- D.ROM
- 查看答案
有 4 个 IP 地址:201.117.15.254、201.117.17.01、201.117.24.5 和 201.117.29.3,如果子网掩码为 255.255.248.0,则这 4 个地址分别属于3个子网;其中属于同一个子网的是()
-
- A.201.117.15.254 和 201.117.17.01
- B.201.117.17.01 和 201.117.24.5
- C.201.117.15.254 和 201.117.29.3
- D.201.117.24.5 和 201.117.29.3
- 查看答案
在异步通信中,每个字符包含1位起始位、7位数据位、1位奇偶位和1位终止位,每秒钟传送200个字符,采用4相位调制,则码元速率为()。
-
- A.50波特
- B.500波特
- C.550波特
- D.1000波特
- 查看答案
在 Windows 中,运行( )命令得到下图所示结果。以下关于该结果的叙述中,错误的是( )。
Pinging 59.74.111.8 with 32 bytes of data:
Reply from 59.74.111.8: bytes=32 time=3ms TTL=60
Reply from 59.74.111.8: bytes=32 time=5ms TTL=60
Reply from 59.74.111.8: bytes=32 time=3ms TTL=60
Reply from 59.74.111.8: bytes=32 time=5ms TTL=60
Ping statistics for 59.74.111.8:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 3ms, Maximum = 5ms, Average = 4ms
-
- A.该命令使得本地主机向目标主机发送了 4 个数据包
- B.本地主机成功收到了目标主机返回的 4 个数据包
- C.本地主机与目标主机连接正常
- D.该命令用于查看目标主机的 IP 地址
- 查看答案