第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

簡易撲克牌游戲,寫的略長了點,花了一下午,給大家看一下

游戲開始:O(∩_∩)O哈哈~

package?imooc.pocker;

import?java.util.ArrayList;
import?java.util.Collections;
import?java.util.List;
import?java.util.Scanner;

/*
?*?可改變玩家數(shù)量和玩家手牌數(shù)
?*?根據(jù)手牌中最大牌進行簡單大小比較
?*/
public?class?Test?{

	public?static?void?main(String[]?args)?{
		System.out.println("--------產(chǎn)生一副撲克牌--------");
		List<Pocker>?pockers?=?Pocker.createPocker();
		System.out.println("--------撲克牌創(chuàng)建成功--------");
		System.out.println(pockers.toString());
		System.out.println("--------開始洗牌--------");
		Collections.shuffle(pockers);
		System.out.println("--------洗牌結束--------");
		System.out.println(pockers.toString());
		System.out.println("--------創(chuàng)建玩家--------");
		Scanner?scanner?=?new?Scanner(System.in);
		List<Player>?players?=?new?ArrayList<Player>();
		int?handCardNum?=?3;
		int?playerNum?=?2;
		while?(true)?{
			try?{
				System.out.println("請輸入玩家數(shù)量:");
				playerNum?=?scanner.nextInt();
				int?id;
				String?name;
				for?(int?i?=?0;?i?<?playerNum;?i++)?{
					System.out.println("創(chuàng)建第"?+?(i?+?1)?+?"位玩家的ID和姓名:");
					System.out.println("輸入玩家id(int):?");
					id?=?scanner.nextInt();
					System.out.println("輸入玩家姓名:");
					name?=?scanner.next();
					players.add(new?Player(id,?name));
				}
				for?(int?i?=?0;?i?<?playerNum;?i++)?{
					System.out.println("歡迎玩家:"?+?players.get(i).getName());
				}
				System.out.println("--------開始發(fā)牌--------");
				int?cardNums?=?handCardNum?*?playerNum;
				Pocker?pocker;
				for?(int?i?=?0;?i?<?cardNums;?i++)?{
					pocker?=?pockers.get(i);
					players.get(i?%?playerNum).getHandPockers().add(pocker);
				}
				System.out.println("--------發(fā)牌結束--------");
				System.out.println("--------開始游戲--------");
				Pocker?maxPocker?=?new?Pocker("方塊",?"2");
				int?winPlayer?=?0;
				for?(int?i?=?0;?i?<?playerNum;?i++)?{
					Collections.sort(players.get(i).getHandPockers());?//?對手牌進行排序
					Collections.reverse(players.get(i).getHandPockers());?//?排序后的手牌進行翻轉,第一位為最大值
					System.out
							.println("玩家"
									+?players.get(i).getName()
									+?"最大手牌為:"
									+?players.get(i).getHandPockers().get(0)
											.toString());
					if?(maxPocker.compareTo(players.get(i).getHandPockers()
							.get(0))?<?0)?{
						maxPocker?=?players.get(i).getHandPockers().get(0);
						winPlayer?=?i;
					}
				}
				System.out.println("玩家"?+?players.get(winPlayer).getName()
						+?"獲勝");
				System.out.println("玩家各自的手牌為:");
				for?(int?i?=?0;?i?<?playerNum;?i++)?{
					System.out.println(players.get(i).getName()?+?":?"
							+?players.get(i).getHandPockers().toString());
				}
				break;
			}?catch?(Exception?e)?{
				System.out.println("輸入值錯誤,請重新輸入");
				scanner?=?new?Scanner(System.in);
			}
		}

	}

}

玩家類:Player

package?imooc.pocker;

import?java.util.ArrayList;
import?java.util.List;

public?class?Player?{
	/*
	?*?玩家
	?*?屬性:ID,姓名,手牌
	?*?手牌為撲克牌的集合
	?*/
	private?int?id;
	private?String?name;
	private?List<Pocker>?handPockers;
	
	public?Player(int?id,?String?name)?{
		this.id?=?id;
		this.name?=?name;
		this.handPockers?=?new?ArrayList<Pocker>();
	}
	
	public?int?getId()?{
		return?id;
	}

	public?String?getName()?{
		return?name;
	}

	public?List<Pocker>?getHandPockers()?{
		return?handPockers;
	}

}

撲克牌類:Pocker

package?imooc.pocker;

import?java.util.ArrayList;
import?java.util.Arrays;
import?java.util.Collections;
import?java.util.List;

/**
?*?
?*?@author?sun
?*??撲克牌
?*??包括四種花色:黑桃、紅桃、梅花、方塊、
?*??十三中點數(shù):2~10,J、Q、K、A,不包括大小王
?*/
public?class?Pocker?implements?Comparable<Pocker>{
	private?String?color;??//撲克牌花色
	private?String?value;??//撲克牌面值
	private?static?final?int?CARDNUM?=?52;???//撲克牌總量
	private?static?final?int?SINGLECOLORNUM?=?13;?//每種顏色撲克牌數(shù)量
	
	public?Pocker(){
	}
	
	public?Pocker(String?color,?String?value)?{
		this.color?=?color;
		this.value?=?value;
	}

	public?String?getColor()?{
		return?color;
	}

	public?String?getValue()?{
		return?value;
	}

	/*
	?*?產(chǎn)生52張撲克牌
	?*?return?List<Pocker>
	?*/
	?
	public?static?List<Pocker>?createPocker(){
		List<Pocker>?pockers?=?new?ArrayList<Pocker>();
		for(int?i?=?0;?i?<?CARDNUM;?i++){
			String?newValue?=?null;
			int?temp?=?i?%?SINGLECOLORNUM;
			switch?(temp)?{
			case?11:
				newValue?=?"j";
				break;
			case?12:
				newValue?=?"Q";
				break;
			case?0:
				newValue?=?"K";
				break;
			case?1:
				newValue?=?"A";
				break;
			default:
				newValue?=?String.valueOf(temp);
			}
			
			String?newColor?=?null;
			switch?(i?/?SINGLECOLORNUM)?{
			case?0:
				newColor?=?"黑桃";
				break;
			case?1:
				newColor?=?"紅桃";
				break;
			case?2:
				newColor?=?"梅花";
				break;
			case?3:
				newColor?=?"方塊";
			}
			pockers.add(new?Pocker(newColor,newValue));
		}
		return?pockers;
	}
	
	/*
	?*?Collections.shuffle進行洗牌
	?*/
	public?static?List<Pocker>?shuffle(List<Pocker>?pockers){
		Collections.shuffle(pockers);
		return?pockers;
	}
	
	/*
	?*?(non-Javadoc)
	?*?@see?java.lang.Comparable#compareTo(java.lang.Object)
	?*?重寫了copmareTo方法,實現(xiàn)了Comparable接口
	?*?根據(jù)牌值和花色在列表中的順序進行比較
	?*/
	@Override
	public?int?compareTo(Pocker?o)?{
		List<String>?valueBase?=?Arrays.asList("2","3","4","5","6","7","8","9","10","J","Q","K","A");
		List<String>?colorBase?=?Arrays.asList("方塊","梅花","紅桃","黑桃");
		if(valueBase.indexOf(this.value)?==?valueBase.indexOf(o.value))
			return?Integer.valueOf(colorBase.indexOf(this.color)).compareTo(Integer.valueOf(colorBase.indexOf(o.getColor())));
		else?
			return?Integer.valueOf(valueBase.indexOf(this.value)).compareTo(Integer.valueOf(valueBase.indexOf(o.getValue())));

	}

	@Override
	public?String?toString()?{
		return?color+value;
	}

}


正在回答

11 回答

雖然我暫時寫不好,但是這個軟件問題太多了,比如玩家數(shù)可以大于17,在輸完id和姓名后才報錯,然后我試了下17,然后創(chuàng)建玩家就會一直進行下去。

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

好東西~

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

?pockers.add(new?Pocker(newColor,newValue));這里為什么出錯啊

0 回復 有任何疑惑可以回復我~
?if(?if(valueBase.indexOf(this.value)?==?valueBase.indexOf(o.value))
????????????return?Integer.valueOf(colorBase.indexOf(this.color)).compareTo(Integer.valueOf(colorBase.indexOf(o.getColor())));
????????else?
????????????return?Integer.valueOf(valueBase.indexOf(this.value)).compareTo(Integer.valueOf(valueBase.indexOf(o.getValue())));)?==?valueBase.indexOf(o.value))
????????????return?Integer.valueOf(colorBase.indexOf(this.color)).compareTo(Integer.valueOf(colorBase.indexOf(o.getColor())));
????????else?
????????????return?Integer.valueOf(valueBase.indexOf(this.value)).compareTo(Integer.valueOf(valueBase.indexOf(o.getValue())));

這段代碼比較的是什么和什么啊,這段代碼看不懂了,大神們能解釋一下么?valueBase.indexOf(this.value)是誰的值的位置,valueBase.indexOf(o.value)又是誰的值在valueBase里的位置?

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

指與點

取模運算和整除運算的使用把我驚呆了!
2015-08-13 回復 有任何疑惑可以回復我~

666

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

public int compareTo(Pocker o) {

? ? ? ?List<String> valueBase = Arrays.asList("2","3","4","5","6","7","8","9","10","J","Q","K","A");

? ? ? ?List<String> colorBase = Arrays.asList("方塊","梅花","紅桃","黑桃");

? ? ? ?if(valueBase.indexOf(this.value) == valueBase.indexOf(o.value))

? ? ? ? ? ?return Integer.valueOf(colorBase.indexOf(this.color)).compareTo(Integer.valueOf(colorBase.indexOf(o.getColor())));

? ? ? ?else

? ? ? ? ? ?return Integer.valueOf(valueBase.indexOf(this.value)).compareTo(Integer.valueOf(valueBase.indexOf(o.getValue())));

? ?}

請教下各位大牛,這個方法內(nèi)部為啥可以調用compareTo本身呢?

0 回復 有任何疑惑可以回復我~
return?Integer.valueOf(colorBase.indexOf(this.color)).compareTo(Integer.valueOf(colorBase.indexOf(o.getColor())));

這一句怎么理解?直接返回

colorBase.indexOf(this.color).compareTo(colorBase.indexOf(o.getColor()))

不行嗎?

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

sunjelly

需要強制類型轉換
2015-07-10 回復 有任何疑惑可以回復我~
#2

五竹 回復 sunjelly

我明白的。但是compare to 方法本身不就是返回int類型的值嗎?還要裝箱為Integer類型嗎?
2015-07-13 回復 有任何疑惑可以回復我~
#3

feeling007

要用包裝類
2015-07-14 回復 有任何疑惑可以回復我~
#4

五竹 回復 feeling007

差不多搞清楚了。一個對象才能調用compare to方法,而colorBase.indexOf(this.color)返回的是一個int類型的值,屬于基本數(shù)據(jù)類型,并非對象,所以要用包裝類Integer的valueOf方法將這個值包裝成Integer對象才可以進行調用。非常感謝各位慕友的指正~
2015-07-14 回復 有任何疑惑可以回復我~
#5

sd1700092 回復 feeling007

你胡說,直接return colorBase.indexOf(this.color).compareTo(colorBase.indexOf(o.getColor()))明明可以的
2015-07-16 回復 有任何疑惑可以回復我~
#6

feeling007 回復 sd1700092

如果可以,我覺得也是int隱式轉化成Integer
2015-07-17 回復 有任何疑惑可以回復我~
#7

Lubywu

字符串型怎么比較,得抓成int 型才可以比較值
2015-11-30 回復 有任何疑惑可以回復我~
查看4條回復

大贊!

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

寫的太棒了~~~~

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

就是,傳作品里去吧。

0 回復 有任何疑惑可以回復我~
首頁上一頁12下一頁尾頁

舉報

0/150
提交
取消
Java入門第三季
  • 參與學習       409768    人
  • 解答問題       4510    個

Java中你必須懂得常用技能,不容錯過的精彩,快來加入吧

進入課程

簡易撲克牌游戲,寫的略長了點,花了一下午,給大家看一下

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

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號