首页
登录
从业资格
阅读以下说明和Java程序,填补代码中的空缺(1)~(6),将解答填入答题纸的对
阅读以下说明和Java程序,填补代码中的空缺(1)~(6),将解答填入答题纸的对
免费题库
2022-08-02
46
问题
阅读以下说明和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.。
转载请注明原文地址:https://tihaiku.com/congyezige/2427263.html
本试题收录于:
初级程序员题库软件水平考试初中高级分类
初级程序员
软件水平考试初中高级
相关试题推荐
下列哪种操作方式不能在界面中显示出属性面板?()A.在应用程序菜单中单击【选项】
解答服务对象的健康问题,帮助其澄清观念、做出决策的人际传播形式称为A.咨询B.个
程序语言若规定程序中的变量必须先定义(或声明)再引用,则违反此规定的程序在()时
IE浏览器能够正确解析()代码。A.ASP B.HTML C.JSP D
若程序P经编译并连接后可执行,则()。A.P是正确的程序 B.P中没有语法
若程序中定义了局部变量与全局变量,则()。A.在函数内只能访问局部变量,而不能访
()不是良好的编程风格。A.变量名尽可能单字母符号或单字母加数字串 B.程序
若程序中使用的变量未设置初始值,则()。A.编译时会一定出错 B.运行时一定出
网页中代码"inputtype=textname="foo"size=20
电子邮件应用程序利用POP3协议()。A.创建邮件 B.加密邮件 C.发送邮
随机试题
TheValueofAnimalResearch Toparaphrase18th-centurystatesmanEdmu
[audioFiles]audio_ehbm_j48001(20082)[/audioFiles]A、Iwasnice.B、No,Ican’t.C
Scientistsfearrisingenergybillsmayleadtoanincreaseinobesityafter
Thehugegrowthofglobal"ecotourism"industryisbecominganincreasingco
如果将部门聚餐烤肉比作购买云计算服务,去饭店吃自助烤肉、去饭店直接吃烤肉、自己架
碳水化合物的来源不包括( )。A.低聚糖 B.非淀粉多糖 C.麦芽糖 D
(2017年真题)甲从某基金管理公司离职时,未经公司同意带走了公司的客户清单,并
另类投资通常不包括()。A.私募股权 B.房产商铺 C.矿业与能源
白虎汤主治A.阳明气分热盛证 B.暑病余热未清,气津两伤证 C.温热病热入营
关于可行性研究报告和项目申请报告的说法,正确的是()。A.项目申请报告是政
最新回复
(
0
)