請(qǐng)大家多多指教,使程序更完美?。?!
主程序:
package?imooc_collection;
import?java.util.ArrayList;
import?java.util.Arrays;
import?java.util.Collections;
import?java.util.List;
import?java.util.Random;
import?java.util.Scanner;
?
?
?
public?class?PokerTest?{
?public?List?apoker;
?
?Apoker[]?pokers=?{new?Apoker("黑桃",?"2"),new?Apoker("黑桃",?"3"),new?Apoker("黑桃",?"4"),new?Apoker("黑桃",?"5"),
????new?Apoker("黑桃",?"6"),new?Apoker("黑桃",?"7"),new?Apoker("黑桃",?"8"),new?Apoker("黑桃",?"9"),new?Apoker("黑桃",?"10"),
????new?Apoker("黑桃",?"J"),new?Apoker("黑桃",?"Q"),new?Apoker("黑桃",?"K"),new?Apoker("黑桃",?"A"),new?Apoker("紅桃",?"2"),new?Apoker("紅桃",?"3"),
????new?Apoker("紅桃",?"4"),new?Apoker("紅桃",?"5"),new?Apoker("紅桃",?"6"),new?Apoker("紅桃",?"7"),new?Apoker("紅桃",?"8"),new?Apoker("紅桃",?"9"),
????new?Apoker("紅桃",?"10"),new?Apoker("紅桃",?"J"),new?Apoker("紅桃",?"Q"),new?Apoker("紅桃",?"K"),new?Apoker("紅桃",?"A"),new?Apoker("梅花",?"2"),
????new?Apoker("梅花",?"3"),new?Apoker("梅花",?"4"),new?Apoker("梅花",?"5"),new?Apoker("梅花",?"6"),new?Apoker("梅花",?"7"),new?Apoker("梅花",?"8"),
????new?Apoker("梅花",?"9"),new?Apoker("梅花",?"10"),new?Apoker("梅花",?"J"),new?Apoker("梅花",?"Q"),new?Apoker("梅花",?"K"),new?Apoker("梅花",?"A"),
????new?Apoker("方片",?"2"),new?Apoker("方片",?"3"),new?Apoker("方片",?"4"),new?Apoker("方片",?"5"),new?Apoker("方片",?"6"),new?Apoker("方片",?"7"),
????new?Apoker("方片",?"8"),new?Apoker("方片",?"9"),new?Apoker("方片",?"10"),new?Apoker("方片",?"J"),new?Apoker("方片",?"Q"),new?Apoker("方片",?"K"),
????new?Apoker("方片",?"A")};?
?
?public?PokerTest(){
??this.apoker=new?ArrayList();
??
?}
?/*
??*?用于往apoker中添加撲克牌
??*/
?public?void?testAdd(){
??//,并通過(guò)調(diào)用add方法,添加到撲克牌的List中??
??System.out.println("-------------創(chuàng)建了一副撲克牌--------------");????????
??/*Apoker[]?pokers=?{new?Apoker("黑桃",?"2"),new?Apoker("黑桃",?"3"),new?Apoker("黑桃",?"4"),new?Apoker("黑桃",?"5"),
????new?Apoker("黑桃",?"6"),new?Apoker("黑桃",?"7"),new?Apoker("黑桃",?"8"),new?Apoker("黑桃",?"9"),new?Apoker("黑桃",?"10"),
????new?Apoker("黑桃",?"J"),new?Apoker("黑桃",?"Q"),new?Apoker("黑桃",?"K"),new?Apoker("黑桃",?"A"),new?Apoker("紅桃",?"2"),new?Apoker("紅桃",?"3"),
????new?Apoker("紅桃",?"4"),new?Apoker("紅桃",?"5"),new?Apoker("紅桃",?"6"),new?Apoker("紅桃",?"7"),new?Apoker("紅桃",?"8"),new?Apoker("紅桃",?"9"),
????new?Apoker("紅桃",?"10"),new?Apoker("紅桃",?"J"),new?Apoker("紅桃",?"Q"),new?Apoker("紅桃",?"K"),new?Apoker("紅桃",?"A"),new?Apoker("梅花",?"2"),
????new?Apoker("梅花",?"3"),new?Apoker("梅花",?"4"),new?Apoker("梅花",?"5"),new?Apoker("梅花",?"6"),new?Apoker("梅花",?"7"),new?Apoker("梅花",?"8"),
????new?Apoker("梅花",?"9"),new?Apoker("梅花",?"10"),new?Apoker("梅花",?"J"),new?Apoker("梅花",?"Q"),new?Apoker("梅花",?"K"),new?Apoker("梅花",?"A"),
????new?Apoker("方片",?"2"),new?Apoker("方片",?"3"),new?Apoker("方片",?"4"),new?Apoker("方片",?"5"),new?Apoker("方片",?"6"),new?Apoker("方片",?"7"),
????new?Apoker("方片",?"8"),new?Apoker("方片",?"9"),new?Apoker("方片",?"10"),new?Apoker("方片",?"J"),new?Apoker("方片",?"Q"),new?Apoker("方片",?"K"),
????new?Apoker("方片",?"A")};*/
??System.out.println("-------------撲克牌創(chuàng)建成功!--------------");?
??apoker.addAll(?Arrays.asList(pokers));
??/*int?size?=?apoker.size();
??System.out.print("撲克牌為:[");??
??for(int?i=?0?;?i?<?size;?i++)?{
???Apoker?ap=?(Apoker)?apoker.get(i);
???System.out.print(?ap.huase+ap.dianshu+",");
??}
??System.out.println("]");*/
?}
?/*
??*??通過(guò)foreach方法遍歷循環(huán)
??*/
?public?void?testForeach(){??
??System.out.print("撲克牌為:[");
??for(Object?obj:apoker){?????????????//思考這里為何要用Object呢?因?yàn)樵厝〕龅臅r(shí)候它會(huì)被認(rèn)為是類
???Apoker?ap=(Apoker)obj;??
???System.out.print(?ap.huase?+?ap.dianshu+",");?
????}
??System.out.println("]");
?}?
?
?public?void?testSort(){??
??System.out.println("-------------開(kāi)始洗牌--------------");?
??List<Apoker>?apokerList=new?ArrayList<Apoker>();
??apokerList.addAll(?Arrays.asList(pokers));?
??Collections.sort(apokerList,new?PokeComparator());
??System.out.print("打亂順序后的撲克牌為:[");
??for(Apoker?poker:apokerList){?????????????//思考這里為何要用Object呢?因?yàn)樵厝〕龅臅r(shí)候它會(huì)被認(rèn)為是類
?????
???System.out.print(poker.huase?+?poker.dianshu+",");?
?????????}
??System.out.println("]");
??
??/*for(Apoker?poker:apokerList){
???System.out.println("學(xué)生:"+poker.dianshu+","+poker.huase);
??}*/?
?System.out.println("-------------洗牌成功--------------");?????
????}?
?
?
?public?void?createPlayerAndSendPokers(){
??System.out.println("-------------創(chuàng)建玩家--------------");?
??System.out.println("請(qǐng)輸入第一位玩家的ID和姓名:");?
??//創(chuàng)建一個(gè)玩家對(duì)象
??Scanner?console=new?Scanner(System.in);
????System.out.println("請(qǐng)輸入ID:");
????String?ID=console.next();
????System.out.println("請(qǐng)輸入姓名:");
????String?name=console.next();
???System.out.println("請(qǐng)輸入第二位玩家的ID和姓名:");
???Scanner?console1=new?Scanner(System.in);
????System.out.println("請(qǐng)輸入ID:");
????String?ID1=console1.next();
????System.out.println("請(qǐng)輸入姓名:");
????String?name1=console.next();
??System.out.println("歡迎玩家:"+name);
??System.out.println("歡迎玩家:"+name1);
??
??System.out.println("-------------開(kāi)始發(fā)牌--------------");?
??apoker.addAll(?Arrays.asList(pokers));
??
??System.out.print("玩家:"+name+"拿牌--");?
??Random?ran=new?Random();?
??int?num0=ran.nextInt(pokers.length);
??Apoker?ap0=?(Apoker)?apoker.get(num0);
??System.out.println(?ap0.huase+ap0.dianshu);
??System.out.print("玩家:"+name1+"拿牌--");
??int?num1=ran.nextInt(pokers.length);
??Apoker?ap1=?(Apoker)?apoker.get(num1);
??System.out.println(?ap1.huase+ap1.dianshu);
?
??
??System.out.print("玩家:"+name+"拿牌--");?
??int?num2=ran.nextInt(pokers.length);
??Apoker?ap2=?(Apoker)?apoker.get(num2);
??System.out.println(?ap2.huase+ap2.dianshu);
??System.out.print("玩家:"+name1+"拿牌--");
??int?num3=ran.nextInt(pokers.length);
??Apoker?ap3=?(Apoker)?apoker.get(num3);
??System.out.println(ap3.huase+ap3.dianshu);
??
??Apoker[]?poker1={new?Apoker(ap0.huase,ap0.dianshu),new?Apoker(ap2.huase,ap2.dianshu)};?
??Apoker[]?poker2={new?Apoker(ap1.huase,ap1.dianshu),new?Apoker(ap3.huase,ap3.dianshu)};?
??
??System.out.println("-------------發(fā)牌結(jié)束--------------");
?
?????????System.out.println("-------------開(kāi)始游戲--------------");???
????List<Apoker>?apokerList=new?ArrayList<Apoker>();
????
????apokerList.addAll(?Arrays.asList(poker1));?
????Collections.sort(apokerList,new?PokeComparator());
????
????Apoker?maxpoker1=apokerList.get(1);
????System.out.println("玩家:"+name+"最大的手牌為:"+maxpoker1.huase+maxpoker1.dianshu);
????
????List<Apoker>?apokerList1=new?ArrayList<Apoker>();
????apokerList1.addAll(?Arrays.asList(poker2));?
????Collections.sort(apokerList1,new?PokeComparator());
????
????Apoker?maxpoker2=apokerList1.get(1);
????System.out.println("玩家:"+name1+"最大的手牌為:"+maxpoker2.huase+maxpoker2.dianshu);
????
????
????List<Apoker>?maxList=new?ArrayList<Apoker>();
????Apoker[]?maxpokers={new?Apoker(maxpoker1.huase,maxpoker1.dianshu),new?Apoker(maxpoker2.huase,maxpoker2.dianshu)};
????maxList.addAll(?Arrays.asList(maxpokers));
????Collections.sort(maxList,new?PokeComparator());
????Apoker?maxpoker=maxList.get(0);
????if(maxpoker.equals(maxpoker1)){
?????System.out.println("----------------玩家:"+name+"贏了!--------------------");
????}
????else
?????System.out.println("----------------玩家:"+name1+"贏了!--------------------");??
????
??}??
?/*System.out.println("玩家:"+name+"拿牌");?
??Random?ran2=new?Random();?
??int?num2=ran.nextInt(pokers.length);
??
??Apoker?ap0=?(Apoker)?apoker.get(num0);
??System.out.print(?ap0.huase+ap0.dianshu);
??
??System.out.println("玩家:"+name1+"拿牌");?
??int?num1=ran.nextInt(pokers.length);
??if(num0!=num1){
??Apoker?ap1=?(Apoker)?apoker.get(num1);
??System.out.print(?ap1.huase+ap1.dianshu);
??}else?continue;
??
??*/
?public?static?void?main(String[]?args)?{
??//?TODO?Auto-generated?method?stub
??PokerTest?pt=new?PokerTest();
???????pt.testAdd();
???????pt.testForeach();
???????pt.testSort();
???????pt.createPlayerAndSendPokers();?
?}
}
比較:
package?imooc_collection;
import?java.util.Comparator;
public?class?PokeComparator?implements?Comparator<Apoker>?{
?@Override
?public?int?compare(Apoker?o1,?Apoker?o2)?{
??//?TODO?Auto-generated?method?stub
??return?o1.dianshu.compareTo(o2.dianshu);
?}
}
玩家:
package?imooc_collection;
import?java.util.HashSet;
import?java.util.Set;
public?class?Player?{
?public?String?id;
?public?String?name;
?public?Set<Apoker>?pokers;//玩家具有手牌的手牌的屬性
?
?public?Player(String?id,String?name){
??this.id=id;
??this.name=name;
??this.pokers=new?HashSet<Apoker>();//由于Set不可進(jìn)行實(shí)例化,所以用set的實(shí)現(xiàn)類對(duì)HashSet對(duì)課程進(jìn)行實(shí)例化
?}
}
撲克牌:
package?imooc_collection;
public?class?Apoker?{
?
?public?String?huase;
?public?String?dianshu;
?public?Apoker(String?huase,String?dianshu){
??this.huase=huase;
??this.dianshu=dianshu;
?}
}
2016-07-28
提幾點(diǎn)建議吧
就是沒(méi)有設(shè)置異常處理,假如輸入的用戶名類型不匹配怎么辦
有些代碼可以簡(jiǎn)化一下,僅供參考
public List<Cards> list; ?//存放創(chuàng)建好的牌對(duì)象
? ? ? public List<String> list1;//存放牌模型的集合框架
? ? ? public Map<Integer,TestUserName> user;//創(chuàng)建學(xué)生對(duì)象并且隨機(jī)選牌
? ? ? Scanner input;
// ? ? ?TestUserName username;
? ? ??
? ? ? public Testlist(){
? ? ?list = new ArrayList<Cards>();
? ? ?list1 = new ArrayList();
? ? ?user = new HashMap<Integer,TestUserName>();
? ? ?input = new Scanner(System.in);
? ? ? }
? ? ??
? ? ? /**
? ? ? ?* 創(chuàng)建一個(gè)從2~A的集合
? ? ? ?*/
? ? ? public void TestAdd(){
? ? ?for(int i = 2; i <= 10; i++){
? ? ?list1.add(String.valueOf(i));
? ? ?}
? ? ?list1.addAll(Arrays.asList("J","Q","K","A"));
// ? ? ?System.out.println("測(cè)試添加牌模型:");
// ? ? ?for (String cards : list1) {
// System.out.print(cards+",");
// }
? ? ? }
? ? ? /**
? ? ? ?* 創(chuàng)建牌
? ? ? ?*/
? ? ? public void TestAdd2(){
? ? ?System.out.println("----------創(chuàng)建撲克牌!-----------");
? ? for (String cards : list1) {
list.add(new Cards("方塊",cards));
}
? ? for (String cards : list1) {
list.add(new Cards("梅花",cards));
}
? ? for (String cards : list1) {
list.add(new Cards("紅桃",cards));
}
? ? for (String cards : list1) {
list.add(new Cards("黑桃",cards));
}
? ? //測(cè)試是否創(chuàng)建成功
? ? System.out.println("------------撲克牌創(chuàng)建成功!------------");
? ? System.out.print("為:");
? ? for (Cards cards : list) {
System.out.print(cards.getDesign()+cards.getNumber()+",");
}
? ? ? }
2016-07-28
代碼弄的復(fù)雜化了,有些地放可以簡(jiǎn)化代碼你全寫(xiě)了,好佩服你的毅力
2016-07-09
package imooc_collection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
?
?
?
public class PokerTest {
?public List apoker;
?
?Apoker[] pokers= {new Apoker("黑桃", "2"),new Apoker("黑桃", "3"),new Apoker("黑桃", "4"),new Apoker("黑桃", "5"),?new Apoker("黑桃", "6"),new Apoker("黑桃", "7"),new Apoker("黑桃", "8"),new Apoker("黑桃", "9"),new Apoker("黑桃", "10"),?new Apoker("黑桃", "J"),new Apoker("黑桃", "Q"),new Apoker("黑桃", K"),new Apoker("黑桃", "A"),new Apoker("紅桃", "2"),new Apoker("紅桃", "3"),?new Apoker("紅桃", "4"),new Apoker("紅桃", "5"),new Apoker("紅桃", "6"),new Apoker("紅桃", "7"),new Apoker("紅桃", "8"),new Apoker("紅桃", "9"),?new Apoker("紅桃", "10"),new Apoker("紅桃", "J"),new Apoker("紅桃", "Q"),new Apoker("紅桃", "K"),new Apoker("紅桃", "A"),new Apoker("梅花", "2"),?new Apoker("梅花", "3"),new Apoker("梅花", "4"),new Apoker("梅花", "5"),new Apoker("梅花", "6"),new Apoker("梅花", "7"),new Apoker("梅花", "8"),?new Apoker("梅花", "9"),new Apoker("梅花", "10"),new Apoker("梅花", "J"),new Apoker("梅花", "Q"),new Apoker("梅花", "K"),new Apoker("梅花", "A"),?new Apoker("方片", "2"),new Apoker("方片", "3"),new Apoker("方片", "4"),new Apoker("方片", "5"),new Apoker("方片", "6"),new Apoker("方片", "7"),?new Apoker("方片", "8"),new Apoker("方片", "9"),new Apoker("方片", "10"),new Apoker("方片", "J"),new Apoker("方片", "Q"),new Apoker("方片", "K"),new Apoker("方片", "A")};?
?
?public PokerTest(){
??this.apoker=new ArrayList();
??
?}
?/*
? * 用于往apoker中添加撲克牌
? */
?public void testAdd(){
??//,并通過(guò)調(diào)用add方法,添加到撲克牌的List中??
??System.out.println("-------------創(chuàng)建了一副撲克牌--------------");????????
?
??System.out.println("-------------撲克牌創(chuàng)建成功!--------------");
??apoker.addAll( Arrays.asList(pokers));
?
?}
?/*
? *? 通過(guò)foreach方法遍歷循環(huán)
? */
?public void testForeach(){??
??System.out.print("撲克牌為:[");
??for(Object obj:apoker){???????????? //思考這里為何要用Object呢?因?yàn)樵厝〕龅臅r(shí)候它會(huì)被認(rèn)為是類
???Apoker ap=(Apoker)obj;??
???System.out.print( ap.huase + ap.dianshu+",");?
??? }
??System.out.println("]");
?}?
?
?public void testSort(){??
??System.out.println("-------------開(kāi)始洗牌--------------");
??List<Apoker> apokerList=new ArrayList<Apoker>();
??apokerList.addAll( Arrays.asList(pokers));?
??Collections.sort(apokerList,new PokeComparator());
??System.out.print("打亂順序后的撲克牌為:[");
??for(Apoker poker:apokerList){???????????? //思考這里為何要用Object呢?因?yàn)樵厝〕龅臅r(shí)候它會(huì)被認(rèn)為是類
?????
???System.out.print(poker.huase + poker.dianshu+",");?
???????? }
??System.out.println("]");
??
?System.out.println("-------------洗牌成功--------------"); ????
??? }?
?
?
?public void createPlayerAndSendPokers(){
??System.out.println("-------------創(chuàng)建玩家--------------");
??System.out.println("請(qǐng)輸入第一位玩家的ID和姓名:");
??//創(chuàng)建一個(gè)玩家對(duì)象
??Scanner console=new Scanner(System.in);
??? System.out.println("請(qǐng)輸入ID:");
??? String ID=console.next();
??? System.out.println("請(qǐng)輸入姓名:");
??? String name=console.next();
?? System.out.println("請(qǐng)輸入第二位玩家的ID和姓名:");
?? Scanner console1=new Scanner(System.in);
??? System.out.println("請(qǐng)輸入ID:");
??? String ID1=console1.next();
??? System.out.println("請(qǐng)輸入姓名:");
??? String name1=console.next();
??System.out.println("歡迎玩家:"+name);
??System.out.println("歡迎玩家:"+name1);
??
??System.out.println("-------------開(kāi)始發(fā)牌--------------");
??apoker.addAll( Arrays.asList(pokers));
??
??System.out.print("玩家:"+name+"拿牌--");
??Random ran=new Random();
??int num0=ran.nextInt(pokers.length);
??Apoker ap0= (Apoker) apoker.get(num0);
??System.out.println( ap0.huase+ap0.dianshu);
??System.out.print("玩家:"+name1+"拿牌--");
??int num1=ran.nextInt(pokers.length);
??Apoker ap1= (Apoker) apoker.get(num1);
??System.out.println( ap1.huase+ap1.dianshu);
?
??
??System.out.print("玩家:"+name+"拿牌--");
??int num2=ran.nextInt(pokers.length);
??Apoker ap2= (Apoker) apoker.get(num2);
??System.out.println( ap2.huase+ap2.dianshu);
??System.out.print("玩家:"+name1+"拿牌--");
??int num3=ran.nextInt(pokers.length);
??Apoker ap3= (Apoker) apoker.get(num3);
??System.out.println(ap3.huase+ap3.dianshu);
??
??Apoker[] poker1={new Apoker(ap0.huase,ap0.dianshu),new Apoker(ap2.huase,ap2.dianshu)};?
??Apoker[] poker2={new Apoker(ap1.huase,ap1.dianshu),new Apoker(ap3.huase,ap3.dianshu)};?
??
??System.out.println("-------------發(fā)牌結(jié)束--------------");
?
???????? System.out.println("-------------開(kāi)始游戲--------------"); ??
????List<Apoker> apokerList=new ArrayList<Apoker>();
????
????apokerList.addAll( Arrays.asList(poker1));?
????Collections.sort(apokerList,new PokeComparator());
????
????Apoker maxpoker1=apokerList.get(1);
????System.out.println("玩家:"+name+"最大的手牌為:"+maxpoker1.huase+maxpoker1.dianshu);
????
????List<Apoker> apokerList1=new ArrayList<Apoker>();
????apokerList1.addAll( Arrays.asList(poker2));?
????Collections.sort(apokerList1,new PokeComparator());
????
????Apoker maxpoker2=apokerList1.get(1);
????System.out.println("玩家:"+name1+"最大的手牌為:"+maxpoker2.huase+maxpoker2.dianshu);
????
????
????List<Apoker> maxList=new ArrayList<Apoker>();
????Apoker[] maxpokers={new Apoker(maxpoker1.huase,maxpoker1.dianshu),new Apoker(maxpoker2.huase,maxpoker2.dianshu)};
????maxList.addAll( Arrays.asList(maxpokers));
????Collections.sort(maxList,new PokeComparator());
????Apoker maxpoker=maxList.get(0);
????if(maxpoker.equals(maxpoker1)){
?????System.out.println("----------------玩家:"+name+"贏了!--------------------");
????}
????else
?????System.out.println("----------------玩家:"+name1+"贏了!--------------------");??
????
??}??
?
?public static void main(String[] args) {
??// TODO Auto-generated method stub
??PokerTest pt=new PokerTest();
?????? pt.testAdd();
?????? pt.testForeach();
?????? pt.testSort();
?????? pt.createPlayerAndSendPokers();?
?}
}
2016-07-05
2016-07-05
我在給撲克牌數(shù)組賦值上面做了一點(diǎn)算法改進(jìn)(懶得打那么多字哈哈),我注意到黑桃紅桃方塊梅花,還有字符JQK出現(xiàn)的挺有規(guī)律的,而且從1-10也是挺有規(guī)律的,話不多說(shuō),代碼如下:
前言補(bǔ)充:
public class Pocker {
?????public String color;
?????public String value;
?????Pocker(String color,String value){
???????? this.color=color;
???????? this.value=value;
???????}
}
重點(diǎn)在這里:
public void addPocker(){
???? Pocker[] pocker=new Pocker[52];
???? String value="";
???? int m=0;
???? int j=0;
???? for(int i=0;i<52;i++)
???? {
???????? j=i/13;
???????? m=i%13+1;
???????? if(m<11){
???????? value=m+"";
???? }
???? else if(m==11){
???? ???? value="J";
???? }
???? else if(m==12){
???????? value="Q";
???? }
???? else if(m==13){
???? ???? value="K";
???? }?
???? switch(j){
???????? case 0:
???????????? pocker[i]=new Pocker("黑桃",value);
???????????? break;
???????? case 1:
???????????? pocker[i]=new Pocker("紅桃",value);
???????????? break;
???????? case 2:
???????????? pocker[i]=new Pocker("梅花",value);
???????????? break;
???????? case 3:
???????????? pocker[i]=new Pocker("方塊",value);
???????????? break;
???? }
???? }
???? this.pockers.addAll(Arrays.asList(pocker));
}