高手。。麻烦了。。生成扑克牌问题 100分!

问题描述

使用JAVA编写以下程序:1、请定义一个名为Card的扑克牌类,该类有两个private访问权限的字符串变量face和suit;分别描述一张牌的牌面值(如:A、K、Q、J、10、9、……3、2等)和花色(如:“黑桃”、“红桃”、“梅花”、“方块”);定义Card类中的public访问权限的构造方法,为类中的变量赋值;定义protected访问权限的方法getFace(),得到扑克牌的牌面值;定义protected访问权限的方法getSuit(),得到扑克牌的花色;定义方法toString(),返回表示扑克牌的花色和牌面值字符串(如“红桃A”、“梅花10”等)。2、若应用程序的main方法中,定义字符串数组f和s;分别表示扑克牌的牌面值和花色;定义52个元素的Card类型数组deck,用来存放4个花色的52张牌。如下所示。Stringf[]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};Strings[]={"黑桃","红桃","梅花","方块"};Carddeck=newCard[52];(1)使用Card类的构造方法给deck数组的52张牌赋值,要求数组中先存放黑桃花色的A、2、3、……、K;然后是红桃花色的A、2、3、……、K;梅花花色的A、2、3、……、K;方块花色的A、2、3、……、K。请写出实现上述功能的程序段。(2)请编写模拟洗牌的完整程序,即把数组deck中的扑克牌随机打乱存放顺序。原题如下:引用内容privateStringface;//A,K,Q,J,10,...2privateStringsuit;//Spade,Heart,Club,DiamondpublicCard(Stringsuit,Stringface){this.face=face;this.suit=suit;}protectedStringgetFace(){returnface;}protectedStringgetSuit(){returnsuit;}publicStringtoString(){returnsuit+""+face;}解题,完成程序解:程序代码packagepoker;publicclassCard{privateStringface;//A,K,Q,J,10,...2privateStringsuit;//Spade,Heart,Club,DiamondpublicCard(Stringsuit,Stringface){this.face=face;this.suit=suit;}protectedStringgetFace(){returnface;}protectedStringgetSuit(){returnsuit;}publicStringtoString(){returnsuit+""+face;}publicstaticvoidshuffle(Card[]deck,intstartIndex,intsize,intsplitIndex){//shuffle洗牌System.out.println("startIndex:"+startIndex);if(splitIndex*2>size){//ifrandis30Card.swap(deck,startIndex,splitIndex,size-splitIndex);//[52]、0、30、22shuffle(deck,size-splitIndex,splitIndex,size-splitIndex);//[52]、22、30、22}elseif(splitIndex*2<size){//ifrndis10Card.swap(deck,startIndex,size-splitIndex,splitIndex);//[52]、0、42、10shuffle(deck,startIndex,size-splitIndex,splitIndex);//[52]、0、42、10}else{Card.swap(deck,startIndex,splitIndex,splitIndex);}}publicstaticvoidswap(Card[]deck,intsrcIndex,intdstIndex,intsize){//交换//SRC是在本位置显示:source的缩写,源的意思HREF是点击后连接的目标:HyperlinkReference,超链接引用Stringface="";Stringsuit="";for(inti=0;i<size;i++){face=deck[srcIndex+i].face;suit=deck[srcIndex+i].suit;deck[srcIndex+i].face=deck[dstIndex+i].face;deck[srcIndex+i].suit=deck[dstIndex+i].suit;deck[dstIndex+i].face=face;deck[dstIndex+i].suit=suit;}}/***@paramargs*/publicstaticvoidmain(String[]args){//第一问解答Card[]deck=newCard[52];Stringf[]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};Strings[]={"Spade","Heart","Club","Diamond"};for(inti=0;i<s.length;i++){for(intj=0;j<f.length;j++){deck[i*13+j]=newCard(s[i],f[j]);//依次存入数组之中,每13张一回合}}//第二问解答intrnd=0;intnumOfShuffle=10;for(inti=0;i<numOfShuffle;i++){rnd=(int)Math.abs(Math.random()*52);//Math.random()返回大于或等于0.0但小于1.0的伪随机double值。Card.shuffle(deck,0,deck.length,rnd);}//Test/*for(inti=0;i<deck.length;i++){System.out.println(deck[i]);}*/}}

解决方案

解决方案二:
想问问publicStringtoString(){returnsuit+""+face;}是什么意思不写可以么谢谢谢了
解决方案三:
虽然,帮不上忙,帮顶下。
解决方案四:
你自己运行过吗?
解决方案五:
引用1楼whynot2010的回复:

想问问publicStringtoString(){returnsuit+""+face;}是什么意思不写可以么谢谢谢了

这个相当于重写吧,具体意思你要自己研究了,不写应该也可以,但你要在另外的地方写,不方便.
解决方案六:
引用1楼whynot2010的回复:

想问问publicStringtoString(){returnsuit+""+face;}是什么意思不写可以么谢谢谢了

一般toString()方法是把某个对象转化为字符串而在这的话,他返回的是以空格分隔的字符串,可以理解为toString()方法重写个人理解、、、
解决方案七:
哇好复杂的程式,我不知道我写的符合龟腚不?importjava.util.ArrayList;importjava.util.List;importjava.util.Random;publicclassaaa{staticList<String>parkList=newArrayList<String>();staticList<String>zslist=newArrayList<String>();staticList<String>lslist=newArrayList<String>();staticList<String>wwlist=newArrayList<String>();staticList<String>zllist=newArrayList<String>();publicstaticvoidmain(String[]args){//初始化牌for(inti=1;i<5;i++){switch(i){case1:initP("红桃");break;case2:initP("梅花");break;case3:initP("方片");break;case4:initP("黑桃");break;}}//开始分牌fenpai();for(inti=0;i<4;i++){switch(i){case0:System.out.println("张三的牌为:=rn");printlist(zslist);break;case1:System.out.println("李四的牌为:=rn");printlist(lslist);break;case2:System.out.println("王五的牌为:=rn");printlist(wwlist);break;case3:System.out.println("赵六的牌为:=rn");printlist(zllist);break;}}}privatestaticvoidprintlist(List<String>list){for(inti=0;i<list.size();i++){System.out.println(list.get(i));}}privatestaticvoidinitP(Stringstr){Stringtemstr=str;for(inti=1;i<14;i++){temstr=str;switch(i){case1:temstr=temstr+"A";break;case11:temstr=temstr+"J";break;case12:temstr=temstr+"Q";break;case13:temstr=temstr+"K";break;default:temstr=temstr+i;}parkList.add(temstr);}}privatestaticvoidfenpai(){Randomrandom=newRandom();intk=0;for(inti=0;i<parkList.size();i++){switch(k){case0:zslist.add(parkList.get(random.nextInt(parkList.size())));break;case1:lslist.add(parkList.get(random.nextInt(parkList.size())));break;case2:wwlist.add(parkList.get(random.nextInt(parkList.size())));break;case3:zllist.add(parkList.get(random.nextInt(parkList.size())));break;}if(k==3){k=0;}else{k++;}}}}

解决方案八:
toString()方法是Object类的方法,所以其他子类(所有其他类都继承Object类,所以即使你没有显式地写上toString()方法,你的aaa类也有toString()方法)都有这个方法,如果你没有显式是写toString()方法,那它就默认地执行继承而来的行为,也就是打印出对象的地址,而这里,你的题目要求toString()方法是返回表示扑克牌的花色和牌面值字符串(如“红桃A”、“梅花10”等),所以你要重写toString()方法.
解决方案九:
不写可以,你用system.out.println(card)就会看到类似Card@1291723之类的信息。写这个就好看些,知道具体是哪个牌。我看这个打印只是在被注释掉的test里有用,所以应该不写也不影响解题
解决方案十:
看起来有点繁琐
解决方案十一:
suit表示牌的花色,face表示牌的内容
解决方案十二:
该回复于2010-11-04 09:56:15被版主删除
解决方案十三:
你的洗牌的原理是什么?只是为了随机取值么?没有其他的规则?如果这样的话直接把deck放到List里面.然后随机取出一个remove一个.循环完了就OK了.
解决方案十四:
有理!
解决方案十五:
/**1*/classCard{/**一张牌的牌面值(如:A、K、Q、J、10、9、……3、2等*/privateStringface;/**花色(如:“黑桃”、“红桃”、“梅花”、“方块”);*/privateStringsuit;publicCard(Stringface,Stringsuit){this.face=face;this.suit=suit;}/***扑克牌的牌面值*@return*/protectedStringgetFace(){returnface;}/***得到扑克牌的花色*@return*/protectedStringgetSuit(){returnsuit;}@OverridepublicStringtoString(){return(suit!=null?suit:"")+(face!=null?face:"");}}/****@authorTsubasa*/publicclassNewClass{publicstaticvoidmain(String[]args){Stringf[]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};Strings[]={"黑桃","红桃","梅花","方块"};Card[]deck=newCard[52];///2.1for(inti=0;i<s.length;i++){for(intj=0;j<f.length;j++){deck[i*f.length+j]=newCard(f[j],s[i]);}}//////2.2//从最后一个位置开始,随机和前面的牌换位置,换完51次即洗完牌java.util.Randomrd=newjava.util.Random(System.currentTimeMillis());for(intt,i=deck.length-1;i>0;i--){t=rd.nextInt(i);Cardc=deck[t];deck[t]=deck[i];deck[i]=c;}}}

其他方案:
publicclassCard{privateStringcolor;privateStringcode;privateintpoint;publicvoidshow(){System.out.println(color+code+"->"+point+"点");}publicStringgetColor(){returncolor;}publicvoidsetColor(Stringcolor){this.color=color;}publicStringgetCode(){returncode;}publicvoidsetCode(Stringcode){this.code=code;}publicintgetPoint(){returnpoint;}publicvoidsetPoint(intpoint){this.point=point;}publicstaticvoidmain(String[]args){Cardcard=newCard();card.setColor("梅花");card.setCode("5");card.setPoint(5);card.show();}}
其他方案:
importjava.util.Random;publicclassPoker{privateCard[]cards;privateRandomrandom;publicPoker(){cards=newCard[52];String[]codes={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};String[]colors={"黑桃","红桃","梅花","方块"};int[]points={1,2,3,4,5,6,7,8,9,10,10,10,10};for(inti=0;i<codes.length;i++){for(intj=0;j<colors.length;j++){Cardcard=newCard();card.setCode(codes[i]);card.setColor(colors[j]);card.setPoint(points[i]);cards[j+13*i]=card;}}random=newRandom();}publicvoidshow(){for(Cardcard:cards){card.show();}}publicvoidwash(){for(inti=0;i<cards.length;i++){intrandomInt=random.nextInt(52);if(i!=randomInt){Cardtemp=cards[i];cards[i]=cards[randomInt];cards[randomInt]=temp;}}}publicCard[]getCards(){returnthis.cards;}/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubPokerpoker=newPoker();//poker.wash();poker.show();}}

时间: 2024-11-01 06:32:21

高手。。麻烦了。。生成扑克牌问题 100分!的相关文章

请教高手 这个一个效果 怎么实现 100分!

问题描述 我现在用vs2008自带的ajax功能设计一个读取数据库的功能.我把一个GridView放到UpdatePanel里面然后读数据库中一个表绑定GridView显示出来没有问题.但是现在客户需求数据不要一次显示出来也不能分页,要分次把数据显示出来.效果是这样的比如数据库里有300条记录,要求先显示50条显示出来,然后程序自动去取下50条最后显示如此循环直到300条取完显示完.整个页面要求不刷屏,看到的只是GridView不断的增大,不知道这个能不能实现,弄了很久也不行,有没有弄过类似东西

[100分]求ms ajax中关于js 调用服务端代码的方法

问题描述 以前用AjaxPro好像很容易,但换成MsAjax后不知该怎么做.要能实现异步回传的,就是在页面中使用了UpdatePanel控件.我提问一般都是给100分的.知道的快来吧. 解决方案 解决方案二:没用过.解决方案三:该回复于2008-04-10 08:33:57被版主删除解决方案四:没用过.解决方案五:该回复于2008-04-10 08:33:55被版主删除解决方案六:我现在正在学一本书叫asp.netajax程序设计第II卷microsoftajaxlibrary异步通信层是陈黎夫

sql server 2005 select update 复杂计算 批量更新 悬赏100分

问题描述 sql server 2005 select update 复杂计算 批量更新 悬赏100分 sql server 2005 select update 复杂计算 批量更新 表结构如上图:ID,日期,代码,开盘,最高,最低,振幅3 求:前三日的振幅,并批量更新. 算法:代码相同,按日期排序,向前取三条,从最高里面找到最大的数,从最低里面找到最小的数. (最高 - 最低) / 开盘 = 振幅.开盘是当前行固定向前数三行的开盘值. 以更新第4条为例: (9 - 1) / 1 = 第4条的振

编程-随机生成10个100位素数

问题描述 随机生成10个100位素数 最近在学RSA的东西,这道题难住了我.跪求一份源代码.谢谢了.C/C++等等都可以. 解决方案 #include #include #include #define RANGE 100int IsPrime(int i); void main(){ int iPrime = 0; while(1) { srand((unsigned)time(NULL));iPrime = rand()%RANGE; //得到随机数 if(IsPrime(iPrime))

100分跪求运动会管理系统

问题描述 跪求运动员管理系统含源代码时间很紧迫,我做不来,希望大家帮帮忙~~~vb.net+SQL2000这是数据库要求(也可以自己设计):系表:系ID自动增长系名称班级表:班级ID自动增长系ID班级名称运动员表:ID自动增长姓名性别班级ID学号运动员编号手动设置,4位项目表:ID自动增长项目名称田赛.径赛是否分组是否决赛报名表:ID自动增长项目ID运动员ID相同项目编号用于自动分组分组表:ID自动增长项目ID运动员ID组号道次号预赛成绩表:ID自动增长项目ID运动员ID成绩成绩表:ID自动增长

100分求一个随机数生成算法

问题描述 500000元分给1000000个人,每个人分0.18到88元,正好分完.请问如何使用算法实现? 解决方案 解决方案二:decimalsumMoney=500000m;//总金额intremainPerson=1000000;Dictionary<string,decimal>dicResult=newDictionary<string,decimal>();//存储分配结果voidPenny(){decimalmoney=0m;//每人分到的金额for(inti=0;i

【大数据100分】大数据架构及行业大数据应用(中级教程)

[大数据100分]南大通用CTO武新:大数据架构及行业大数据应用[大数据中级教程] 主讲嘉宾:武新 主持人:中关村大数据产业联盟 副秘书长陈新河 承办:中关村大数据产业联盟 武新,南大通用高级副总裁兼CTO,法国奥尔良大学和法国国家科研中心博士:南大通用GBASE系列数据库产品的总设计师.在著名的甲骨文公司任职12年,是世界顶级的Oracle数据库专家.2010年获得中组部实施的国家"千人计划"荣誉(海外高层次人才引进计划),是国内基础软件行业唯一入选的数据库技术专家.对目前最新兴的列

100分求汉语词组大全啊

问题描述 有个项目需要汉语词组大全,不知道哪位手头有这样的库呢?如果有的话,麻烦给一份yuanchuan2001@sina.com十分感谢,100分奉上 解决方案 解决方案二:jf解决方案三:顶顶,继续求-感谢哪位给一份解决方案四:帮楼主顶解决方案五:继续求--解决方案六:jf这个不是分能求来的解决方案七:痛苦,不知道如何能获得呢??

解决后会有100分的额外奖励!!formsauthentication.setauthcookie(username,false)的cookie.value问题

问题描述 如题公司服务器升级,从win2003,IIS6升级到win2008,IIS7.5升级后发现登陆后的cookie值不一致,2008的要比2003的值要长.导致其他java系统对接单点登陆出现解析cookie错误.问题:iis7已经启用父路径,应用程序按照32位运行也是true:这个升级还需要配置些什么吗?解决后会有100分的额外奖励!!!!!附cookie值之前是win2003.iis6,用这个方法得到的cookie.value是[6AEEA3F7F7D7EE4EDA843EF3C92F