請大家多多指教,使程序更完美!?。?主程序:
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(){
??//,并通過調(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("]");*/
?}
?/*
??*??通過foreach方法遍歷循環(huán)
??*/
?public?void?testForeach(){??
??System.out.print("撲克牌為:[");
??for(Object?obj:apoker){?????????????//思考這里為何要用Object呢?因為元素取出的時候它會被認為是類
???Apoker?ap=(Apoker)obj;??
???System.out.print(?ap.huase?+?ap.dianshu+",");?
????}
??System.out.println("]");
?}?
?
?public?void?testSort(){??
??System.out.println("-------------開始洗牌--------------");?
??List<Apoker>?apokerList=new?ArrayList<Apoker>();
??apokerList.addAll(?Arrays.asList(pokers));?
??Collections.sort(apokerList,new?PokeComparator());
??System.out.print("打亂順序后的撲克牌為:[");
??for(Apoker?poker:apokerList){?????????????//思考這里為何要用Object呢?因為元素取出的時候它會被認為是類
?????
???System.out.print(poker.huase?+?poker.dianshu+",");?
?????????}
??System.out.println("]");
??
??/*for(Apoker?poker:apokerList){
???System.out.println("學生:"+poker.dianshu+","+poker.huase);
??}*/?
?System.out.println("-------------洗牌成功--------------");?????
????}?
?
?
?public?void?createPlayerAndSendPokers(){
??System.out.println("-------------創(chuàng)建玩家--------------");?
??System.out.println("請輸入第一位玩家的ID和姓名:");?
??//創(chuàng)建一個玩家對象
??Scanner?console=new?Scanner(System.in);
????System.out.println("請輸入ID:");
????String?ID=console.next();
????System.out.println("請輸入姓名:");
????String?name=console.next();
???System.out.println("請輸入第二位玩家的ID和姓名:");
???Scanner?console1=new?Scanner(System.in);
????System.out.println("請輸入ID:");
????String?ID1=console1.next();
????System.out.println("請輸入姓名:");
????String?name1=console.next();
??System.out.println("歡迎玩家:"+name);
??System.out.println("歡迎玩家:"+name1);
??
??System.out.println("-------------開始發(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("-------------開始游戲--------------");???
????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不可進行實例化,所以用set的實現(xiàn)類對HashSet對課程進行實例化
?}
}
撲克牌:
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
提幾點建議吧
就是沒有設置異常處理,假如輸入的用戶名類型不匹配怎么辦
有些代碼可以簡化一下,僅供參考
public List<Cards> list; ?//存放創(chuàng)建好的牌對象
? ? ? public List<String> list1;//存放牌模型的集合框架
? ? ? public Map<Integer,TestUserName> user;//創(chuàng)建學生對象并且隨機選牌
? ? ? 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)建一個從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("測試添加牌模型:");
// ? ? ?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));
}
? ? //測試是否創(chuàng)建成功
? ? System.out.println("------------撲克牌創(chuàng)建成功!------------");
? ? System.out.print("為:");
? ? for (Cards cards : list) {
System.out.print(cards.getDesign()+cards.getNumber()+",");
}
? ? ? }
2016-07-28
代碼弄的復雜化了,有些地放可以簡化代碼你全寫了,好佩服你的毅力
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(){
??//,并通過調(diào)用add方法,添加到撲克牌的List中??
??System.out.println("-------------創(chuàng)建了一副撲克牌--------------");????????
?
??System.out.println("-------------撲克牌創(chuàng)建成功!--------------");
??apoker.addAll( Arrays.asList(pokers));
?
?}
?/*
? *? 通過foreach方法遍歷循環(huán)
? */
?public void testForeach(){??
??System.out.print("撲克牌為:[");
??for(Object obj:apoker){???????????? //思考這里為何要用Object呢?因為元素取出的時候它會被認為是類
???Apoker ap=(Apoker)obj;??
???System.out.print( ap.huase + ap.dianshu+",");?
??? }
??System.out.println("]");
?}?
?
?public void testSort(){??
??System.out.println("-------------開始洗牌--------------");
??List<Apoker> apokerList=new ArrayList<Apoker>();
??apokerList.addAll( Arrays.asList(pokers));?
??Collections.sort(apokerList,new PokeComparator());
??System.out.print("打亂順序后的撲克牌為:[");
??for(Apoker poker:apokerList){???????????? //思考這里為何要用Object呢?因為元素取出的時候它會被認為是類
?????
???System.out.print(poker.huase + poker.dianshu+",");?
???????? }
??System.out.println("]");
??
?System.out.println("-------------洗牌成功--------------"); ????
??? }?
?
?
?public void createPlayerAndSendPokers(){
??System.out.println("-------------創(chuàng)建玩家--------------");
??System.out.println("請輸入第一位玩家的ID和姓名:");
??//創(chuàng)建一個玩家對象
??Scanner console=new Scanner(System.in);
??? System.out.println("請輸入ID:");
??? String ID=console.next();
??? System.out.println("請輸入姓名:");
??? String name=console.next();
?? System.out.println("請輸入第二位玩家的ID和姓名:");
?? Scanner console1=new Scanner(System.in);
??? System.out.println("請輸入ID:");
??? String ID1=console1.next();
??? System.out.println("請輸入姓名:");
??? String name1=console.next();
??System.out.println("歡迎玩家:"+name);
??System.out.println("歡迎玩家:"+name1);
??
??System.out.println("-------------開始發(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("-------------開始游戲--------------"); ??
????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ù)組賦值上面做了一點算法改進(懶得打那么多字哈哈),我注意到黑桃紅桃方塊梅花,還有字符JQK出現(xiàn)的挺有規(guī)律的,而且從1-10也是挺有規(guī)律的,話不多說,代碼如下:
前言補充:
public class Pocker {
?????public String color;
?????public String value;
?????Pocker(String color,String value){
???????? this.color=color;
???????? this.value=value;
???????}
}
重點在這里:
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));
}