亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

比大小,不一樣的算法,利用list集合的indexOf定位,用隨機抽取牌的方式而非打亂順序!

package?demo_playing_cards;
/*
?*?1.主要功能是創建牌屬性
?*?2.將創建好的對象賦值給List集合。
?*/
public?class?Cards?implements?Comparable<Cards>{
???????private?String?design;?//?創建花色屬性
???????private?String?number;?//創建點色屬性
???????
	public?String?getDesign()?{
		return?design;
	}
	public?void?setDesign(String?design)?{
		this.design?=?design;
	}
	public?String?getNumber()?{
		return?number;
	}
	public?void?setNumber(String?number)?{
		this.number?=?number;
	}
	
	public?Cards(String?design,String?number){
		this.design?=?design;
		this.number?=?number;
	}
	@Override
	public?int?compareTo(Cards?o)?{
		//?TODO?自動生成的方法存根
		return?this.number.compareTo(o.number);
	}
}

用戶類:創建用戶

package?demo_playing_cards;

import?java.util.HashSet;
import?java.util.Set;

/**
?*?1.創建學生對象,進行抓牌比點數
?*?2.沒人抓取2張牌,按照2~A比大小,若點數相同則按照黑紅梅方順序比較
?*/
public?class?TestUserName{
????????????private?Integer?Id;
????????????
????????????private?String?Name;
			
????????????Set<Cards>?set;
????????????
????????????@Override
			public?int?hashCode()?{
				final?int?prime?=?31;
				int?result?=?1;
				result?=?prime?*?result?+?((Name?==?null)???0?:?Name.hashCode());
				return?result;
			}
			@Override
			public?boolean?equals(Object?obj)?{
				if?(this?==?obj)
					return?true;
				if?(obj?==?null)
					return?false;
				if?(!(obj?instanceof?TestUserName))
					return?false;
				TestUserName?other?=?(TestUserName)?obj;
				if?(Name?==?null)?{
					if?(other.Name?!=?null)
						return?false;
				}?else?if?(!Name.equals(other.Name))
					return?false;
				return?true;
			}
????????????
			public?Integer?getId()?{
				return?Id;
			}
			public?void?setId(Integer?id)?{
				Id?=?id;
			}
			public?String?getName()?{
				return?Name;
			}
			public?void?setName(String?name)?{
				Name?=?name;
			}
?????public?TestUserName(Integer?Id,String?Name){
????	?this.Id?=?Id;
????	?this.Name?=?Name;
????	?this.set?=?new?HashSet<Cards>();
?????}
	
	}
package?demo_playing_cards;

import?java.util.ArrayList;
import?java.util.Arrays;
import?java.util.HashMap;
import?java.util.InputMismatchException;
import?java.util.List;
import?java.util.Map;
import?java.util.Map.Entry;
import?java.util.Random;
import?java.util.Scanner;
import?java.util.Set;
/*
?*?1.將創建好的牌存入List有序集合中
?*/
public?class?Testlist?{
	
??????public?List<Cards>?list;??//存放創建好的牌對象
??????public?List<String>?list1;//存放牌模型的集合框架
??????public?Map<Integer,TestUserName>?user;//創建學生對象并且隨機選牌
??????List<Integer>?userStore;??
??????TestUserName?username;
??????Scanner?input;
//??????TestUserName?username;
??????
??????public?Testlist(){
????	??list?=?new?ArrayList<Cards>();
????	??list1?=?new?ArrayList();
????	??user?=?new?HashMap<Integer,TestUserName>();
????	??userStore?=?new?ArrayList<Integer>();
????	??input?=?new?Scanner(System.in);
??????}
??????
??????/**
???????*?創建一個從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+",");
//		}
??????}
??????/**
???????*?創建牌
???????*/
??????public?void?TestAdd2(){
????	??System.out.println("----------創建撲克牌!-----------");
????	for?(String?cards?:?list1)?{
			list.add(new?Cards("方塊",cards));	
			list.add(new?Cards("梅花",cards));
			list.add(new?Cards("紅桃",cards));
			list.add(new?Cards("黑桃",cards));
		}
????	
????	//測試是否創建成功
????	System.out.println("----------撲克牌創建成功!-----------");
????	System.out.print("為:");
????	for?(Cards?cards?:?list)?{
			System.out.print(cards.getDesign()+cards.getNumber()+",");
		}
????	System.out.println();
??????}
??????
??????
??????/**
???????*?存儲用戶ID的方法
???????*/
??????public?void?TestUserStort(Integer?ID){
????	??userStore.add(ID);
??????}
??????
??????/**
???????*?創建用戶對象并且隨機抽取里面的兩張牌
???????*?@param?args
???????*/
??????public?void?TestUserName(){
//????	??boolean?searchFlag=false;
????	??Integer?ID?=?null;
????	??for(int?i?=?1;i?<=?2;?i++){?
????		??while(true){
??????????
			try?{
				System.out.println("請輸入第"+i+"個用戶ID");
				???ID?=?input.nextInt();
			}?catch?(Exception?e)?{
				//?TODO?自動生成的?catch?塊
				System.out.println("請輸入整形的ID");//捕捉類型不匹配的錯誤
				input.next();????//清空緩沖區
				continue;
			}
			?//判斷ID在user集合中是否存在
				??TestUserName?us?=?user.get(ID);
				??if(us?!=?null){
					??System.out.println("已存在該學生??!");	
					??continue;
					??}			????????	??				??
		
				??TestUserStort(ID);	??
??????????break;
????		??}
????	??//輸入用戶名
????	??System.out.println("請輸入第"+i+"用戶名");
????	??
????	??String?name?=?input.next();
????	??//將ID和name給創建對象
????	???username?=?new?TestUserName(ID,?name);
????	???user.put(ID,username);
????	???
		}
????	??
????	??
????	??Set<Entry<Integer,TestUserName>>?entryset?=?user.entrySet();????	??
???	???for?(Entry<Integer,?TestUserName>?entry?:?entryset)?{
			System.out.println("----歡迎玩家:"?+?entry.getValue().getName());
???	???}
????	??}??
??????
??????/**
???????*?進行發牌
???????*/
??????public?void?TestLicensing(){
????	??Random?random?=?new?Random();
????	??System.out.println("---------開始發牌...---------");
????	
????	??TestUserName?name1?=?user.get(userStore.get(0));
????	??TestUserName?name2?=?user.get(userStore.get(1));
????	??Cards?ca?=?null;
????	??int?[]size?=?new?int[2];
????	??for(int?i?=?0;i?<?2;?i++){
????		??do{
????		??ca?=?list.get(random.nextInt(list.size()-1));
????		??}while(name1.set.contains(ca));
????		??name1.set.add(ca);
????		??System.out.println(?name1.getName()?+?"用戶所抽到的牌:"?+?ca.getDesign()+ca.getNumber());
????		?size[i]?=?list.indexOf(ca);
????	??}
????	??Cards?ca1;
????	??int[]?size2?=?new?int[2];
????	??for(int?i?=?0;i?<?2;?i++){
????		??do{
????		??ca1?=?list.get(random.nextInt(list.size()-1));
????		??}while(name1.set.contains(ca1)?||?name2.set.contains(ca));
????		??name2.set.add(ca1);
????		??System.out.println(?name2.getName()?+?"用戶所抽到的牌:"?+?ca1.getDesign()+ca1.getNumber());
????		??size2[i]?=?list.indexOf(ca1);
????	??}
????	??//對數組進行排序
????	??Arrays.sort(size);
????	??Arrays.sort(size2);
????	??//進行比較,誰大誰贏
????	??if(size[1]>size2[1]){
????		??System.out.println(name1.getName()+"獲勝");
????	??}else
????		??System.out.println(name2.getName()+"獲勝");
??????}
??????
??????public?static?void?main(String[]?args){
????	??Testlist?st?=?new?Testlist();
????	??st.TestAdd();
????	??st.TestAdd2();
????	??st.TestUserName();
????	??st.TestLicensing();
??????}
}


正在回答

2 回答

哇,好厲害!


0 回復 有任何疑惑可以回復我~

好巧我也是利用角標排定大小,但是真敢其實是很爛的,關鍵是我忘了比較器咋寫

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

比大小,不一樣的算法,利用list集合的indexOf定位,用隨機抽取牌的方式而非打亂順序!

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號