最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Java(4種方法和擴展):牌54張,三個人斗地主,給每個人各17牌,并且還要有3張底牌

2020-03-15 19:40 作者:詩書畫唱  | 我要投稿

(個人認為方法三最好,最好理解和最簡單)


一副牌是54張,三個人斗地主,進行分牌,分給每個人牌,并且還有有底牌

方法一:


package a;


import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Random;


public class lizi {

public static void main(String[] args) {

String[] pai = new String[] { "3", "4", "5", "6", "7", "8", "9", "10",

"J", "Q", "K", "A", "2" };

HashMap<String, Integer> hj = new HashMap<>();

HashMap<String, Integer> hy = new HashMap<>();

HashMap<String, Integer> hb = new HashMap<>();


List<String> a = new ArrayList<String>();

for (int i = 0; i < pai.length; i++) {

a.add(pai[i]);

a.add(pai[i]);

a.add(pai[i]);

a.add(pai[i]);

}

a.add("大王");

a.add("小王");


Random rand = new Random();

String temp = null;

for (int k = 0; k < 100; k++) {

int p = a.size();

int l = rand.nextInt(p);

int m = rand.nextInt(p);

if (l == m)

continue;

{

temp = a.get(l);

a.set(l, a.get(m));

a.set(m, temp);

}

}

// Collections.shuffle(a);


List<String> j = new ArrayList<String>();

List<String> y = new ArrayList<String>();

List<String> b = new ArrayList<String>();

List<String> d = new ArrayList<String>();

for (int i = 0; i < a.size(); i++) {

if (i >= a.size() - 3) {

d.add(a.get(i));

} else if (i % 3 == 0) {

j.add(a.get(i));

} else if (i % 3 == 1) {

y.add(a.get(i));

} else if (i % 3 == 2) {

b.add(a.get(i));

}

}

System.out.println("底牌:" + d);

System.out.println("甲被發(fā)到的牌:" + j);

System.out.println("乙被發(fā)到的牌:" + y);

System.out.println("丙被發(fā)到的牌:" + b);

for (String str : j) {

if (hj.containsKey(str)) {

hj.put(str, hj.get(str) + 1);

} else

hj.put(str, 1);

}


System.out.println("1代表?, 2代表?, 3代表?,4代表?");

System.out.println("甲被發(fā)到的牌對應(yīng)圖形情況:" + hj);


for (String str : y) {

if (hy.containsKey(str)) {

hy.put(str, hy.get(str) + 1);

} else

hy.put(str, 1);

}

System.out.println("乙被發(fā)到的牌對應(yīng)圖形情況:" + hy);


for (String str : b) {

if (hb.containsKey(str)) {

hb.put(str, hb.get(str) + 1);

} else

hb.put(str, 1);

}

System.out.println("丙被發(fā)到的牌對應(yīng)圖形情況:" + hb);

}

}

方法二:


package a;


import java.util.ArrayList;

import java.util.HashMap;

import java.util.Random;


public class lizi {

public static void main(String[] args) {

String[] Stringchucundepai = new String[] { "A", "2", "3", "4", "5",

"6", "7", "8", "9", "10", "J", "Q", "K" };

HashMap<String, Integer> HSchucundejiadepai = new HashMap<>();

HashMap<String, Integer> HSchucundeyidepai = new HashMap<>();

HashMap<String, Integer> HSchucundebingdepai = new HashMap<>();

/*?,?,?,?共12個

* 個人理解:HSchucundejiadepai是用HashMap儲存的甲的牌<String, Integer>為泛型的應(yīng)用,

* 表明只儲存String和Integer類型的數(shù)據(jù)

*/

ArrayList<String> yongALchucundeshuju = new ArrayList<String>();


/*

* 個人理解:這里的<String>為泛型,是規(guī)定集合可儲存范圍條件的,

* ArrayList<String>表明只儲存String到ArrayList里面

*/

for (int i = 0; i < Stringchucundepai.length; i++) {

/* Stringchucundepai.length=13 */

yongALchucundeshuju.add(Stringchucundepai[i]);

yongALchucundeshuju.add(Stringchucundepai[i]);

yongALchucundeshuju.add(Stringchucundepai[i]);

yongALchucundeshuju.add(Stringchucundepai[i]);

/*

* 用add和for循環(huán),在"(用ArrayList儲存的String數(shù)據(jù))yongALchucundeshuju"中添加了

* 4個"Stringchucundepai[0]("A")到Stringchucundepai[12]("K")",13*4=52

*/

}

yongALchucundeshuju.add("大王");

yongALchucundeshuju.add("小王");

/*

* 用add在"(用ArrayList儲存的String數(shù)據(jù))yongALchucundeshuju"中添加了

* "大王","小王",13*4+2=54

*/

Random suijishu = new Random();

/* suijishu為用Random得到的隨機數(shù) */

String fangzidawangxiaowangchongfu = null;/*

* fangzidawangxiaowangchongfu是防止

* "大王"

* "小王"等重復(fù)的,這種先在for外面設(shè)null的方法可常用于防重復(fù)

*/

for (int k = 0; k < 100; k++) {

int zongpaishu = yongALchucundeshuju.size();

/* yongALchucundeshuju.size()=13*4+2=54,zongpaishu為總牌數(shù) */

int yongRandomdedaodesuijishu1 = suijishu.nextInt(zongpaishu);

/*

* suijishu為隨機數(shù), nextInt用于規(guī)定隨機數(shù)suijishu可取值得范圍,這里是zongpaishu,即54。

* nextInt(54)等同于nextInt(54)+0,就是0到54(含頭不含尾),即為0到53(含頭含尾)

* “yongRandomdedaodesuijishu1”是“用Random得到的隨機數(shù)1”

*/

int yongRandomdedaodesuijishu2 = suijishu.nextInt(zongpaishu);

if (yongRandomdedaodesuijishu1 == yongRandomdedaodesuijishu2)

continue;/*

* 這里continue表明當用Random得到的隨機數(shù)1=用Random得到的隨機數(shù)2時,

* 跳過當次循環(huán)中剩下的語句,執(zhí)行下一次循環(huán)(即不執(zhí)行且不出現(xiàn)“用Random得到的隨機數(shù)1=

* 用Random得到的隨機數(shù)2”的情況, 其他的{}中的語句會執(zhí)行 ,

*/


/*

* continue和break有點類似,區(qū)別在于continue只是終止本次循環(huán),接著還執(zhí)行后面的循環(huán),break則完全終止循環(huán)。

*?

*     可以理解為continue是跳過當次循環(huán)中剩下的語句,執(zhí)行下一次循環(huán)。

*/

{

fangzidawangxiaowangchongfu = yongALchucundeshuju


.get(yongRandomdedaodesuijishu1);

/* 這里有一個賦值的過程,就像進行兩個變量a和b,用c進行交換a和b的值,防止a,b在賦值時相等 */

yongALchucundeshuju.set(yongRandomdedaodesuijishu1,

yongALchucundeshuju.get(yongRandomdedaodesuijishu2));

yongALchucundeshuju.set(yongRandomdedaodesuijishu2,

fangzidawangxiaowangchongfu);

}/*

* 個人理解:set用于插入數(shù)據(jù),這里往yongALchucundeshuju中插入

* yongRandomdedaodesuijishu1(int類型),

* yongALchucundeshuju.get(yongRandomdedaodesuijishu2)

* (yongRandomdedaodesuijishu2這里為下標,含頭含尾的0到53)

* 等數(shù)據(jù),yongALchucundeshuju 儲存了得到的數(shù)據(jù),要用時就拿出來

*/

}


ArrayList<String> yongALchucundejiadepai = new ArrayList<String>();

ArrayList<String> yongALchucundeyidedepai = new ArrayList<String>();

ArrayList<String> yongALchucundebingdepai = new ArrayList<String>();

ArrayList<String> yongALchucundedipai = new ArrayList<String>();

for (int i = 0; i < yongALchucundeshuju.size(); i++) {

/* yongALchucundeshuju.size() =54 */

if (i >= yongALchucundeshuju.size() - 3) {

/* yongALchucundeshuju.size() - 3=54-3=52 */

yongALchucundedipai.add(yongALchucundeshuju.get(i));

/*

* yongALchucundedipai為用ArrayList儲存的底牌,i可為含頭含尾的0到53

* yongALchucundeshuju.get(i)就可為含頭含尾的4組“"A", "2", "3", "4", "5",

* "6", "7", "8", "9", "10", "J", "Q", "K"”和一組"大王","小王"

*/

} else if (i % 3 == 0) {

/*

* i % 3 == 0表明可被3整除余數(shù)為0, 在含頭含尾的下標0到53中,出現(xiàn)i % 3 == 0和出現(xiàn)i % 3 ==

* 1和 出現(xiàn)i % 3 == 2的概率互相相同,“0,1,2”,“3,4,5”,......“51,52,53”

* 編程,電腦,大腦等就是“儲存和取出”

*/

yongALchucundejiadepai.add(yongALchucundeshuju.get(i));

} else if (i % 3 == 1) {

yongALchucundeyidedepai.add(yongALchucundeshuju.get(i));

} else if (i % 3 == 2) {

yongALchucundebingdepai.add(yongALchucundeshuju.get(i));

}

}

System.out.println("底牌:" + yongALchucundedipai);

System.out.println("甲被發(fā)到的牌:" + yongALchucundejiadepai);

System.out.println("乙被發(fā)到的牌:" + yongALchucundeyidedepai);

System.out.println("丙被發(fā)到的牌:" + yongALchucundebingdepai);




}}


一副牌是54張,三個人斗地主,進行分牌,分給每個人牌,并且還有有底牌

方法三:

package a;


import java.util.ArrayList;

import java.util.HashMap;

import java.util.Random;


public class lizi {

public static void main(String[] args) {

String[] Stringchucundepai = new String[] { "?A", "?2", "?3", "?4",

"?5", "?6", "?7", "?8", "?9", "?10", "?J", "?Q", "?K", "?A",

"?2", "?3", "?4", "?5", "?6", "?7", "?8", "?9", "?10", "?J",

"?Q", "?K", "?A", "?2", "?3", "?4", "?5", "?6", "?7", "?8",

"?9", "?10", "?J", "?Q", "?K", "?A", "?2", "?3", "?4", "?5",

"?6", "?7", "?8", "?9", "?10", "?J", "?Q", "?K" };


HashMap<String, Integer> HSchucundejiadepai = new HashMap<>();

HashMap<String, Integer> HSchucundeyidepai = new HashMap<>();

HashMap<String, Integer> HSchucundebingdepai = new HashMap<>();


ArrayList<String> yongALchucundeshuju = new ArrayList<String>();

for (int i = 0; i < Stringchucundepai.length; i++) {


yongALchucundeshuju.add(Stringchucundepai[i]);


}


yongALchucundeshuju.add("大王");

yongALchucundeshuju.add("小王");


Random suijishu = new Random();


String fangzidawangxiaowangchongfu = null;

for (int k = 0; k < 100; k++) {

int zongpaishu = yongALchucundeshuju.size();


int yongRandomdedaodesuijishu1 = suijishu.nextInt(zongpaishu);


int yongRandomdedaodesuijishu2 = suijishu.nextInt(zongpaishu);

if (yongRandomdedaodesuijishu1 == yongRandomdedaodesuijishu2)

continue;

{

fangzidawangxiaowangchongfu = yongALchucundeshuju


.get(yongRandomdedaodesuijishu1);


yongALchucundeshuju.set(yongRandomdedaodesuijishu1,

yongALchucundeshuju.get(yongRandomdedaodesuijishu2));

yongALchucundeshuju.set(yongRandomdedaodesuijishu2,

fangzidawangxiaowangchongfu);

}

}


ArrayList<String> yongALchucundejiadepai = new ArrayList<String>();

ArrayList<String> yongALchucundeyidedepai = new ArrayList<String>();

ArrayList<String> yongALchucundebingdepai = new ArrayList<String>();

ArrayList<String> yongALchucundedipai = new ArrayList<String>();

for (int i = 0; i < yongALchucundeshuju.size(); i++) {


if (i >= yongALchucundeshuju.size() - 3) {


yongALchucundedipai.add(yongALchucundeshuju.get(i));


} else if (i % 3 == 0) {


yongALchucundejiadepai.add(yongALchucundeshuju.get(i));

} else if (i % 3 == 1) {

yongALchucundeyidedepai.add(yongALchucundeshuju.get(i));

} else if (i % 3 == 2) {

yongALchucundebingdepai.add(yongALchucundeshuju.get(i));

}

}

System.out.println("底牌:" + yongALchucundedipai);

System.out.println("甲被發(fā)到的牌:" + yongALchucundejiadepai);

System.out.println("乙被發(fā)到的牌:" + yongALchucundeyidedepai);

System.out.println("丙被發(fā)到的牌:" + yongALchucundebingdepai);


}

}

/*ArrayList和HashMap都是無序的*/

方法四:

一副牌是54張,三個人斗地主,進行分牌,分給每個人牌,并且還有有底牌


package a;


import java.util.ArrayList;

import java.util.HashMap;

import java.util.HashSet;

import java.util.Random;


public class lizi {

public static void main(String[] args) {

String[] Stringchucundepai = new String[] { "?A", "?2", "?3", "?4",

"?5", "?6", "?7", "?8", "?9", "?10", "?J", "?Q", "?K", "?A",

"?2", "?3", "?4", "?5", "?6", "?7", "?8", "?9", "?10", "?J",

"?Q", "?K", "?A", "?2", "?3", "?4", "?5", "?6", "?7", "?8",

"?9", "?10", "?J", "?Q", "?K", "?A", "?2", "?3", "?4", "?5",

"?6", "?7", "?8", "?9", "?10", "?J", "?Q", "?K" };


HashMap<String, Integer> HSchucundejiadepai = new HashMap<>();

HashMap<String, Integer> HSchucundeyidepai = new HashMap<>();

HashMap<String, Integer> HSchucundebingdepai = new HashMap<>();


ArrayList<String> yongALchucundeshuju = new ArrayList<String>();

for (int i = 0; i < Stringchucundepai.length; i++) {


yongALchucundeshuju.add(Stringchucundepai[i]);


}


yongALchucundeshuju.add("大王");

yongALchucundeshuju.add("小王");


Random suijishu = new Random();


String fangzidawangxiaowangchongfu = null;

for (int k = 0; k < 100; k++) {

int zongpaishu = yongALchucundeshuju.size();


int yongRandomdedaodesuijishu1 = suijishu.nextInt(zongpaishu);


int yongRandomdedaodesuijishu2 = suijishu.nextInt(zongpaishu);

if (yongRandomdedaodesuijishu1 == yongRandomdedaodesuijishu2)

continue;

{

fangzidawangxiaowangchongfu = yongALchucundeshuju


.get(yongRandomdedaodesuijishu1);


yongALchucundeshuju.set(yongRandomdedaodesuijishu1,

yongALchucundeshuju.get(yongRandomdedaodesuijishu2));

yongALchucundeshuju.set(yongRandomdedaodesuijishu2,

fangzidawangxiaowangchongfu);

}

}


HashSet<String> yongHSchucundejiadepai = new HashSet<String>();

HashSet<String> yongHSchucundeyidedepai = new HashSet<String>();

HashSet<String> yongHSchucundebingdepai = new HashSet<String>();

HashSet<String> yongHSchucundedipai = new HashSet<String>();

for (int i = 0; i < yongALchucundeshuju.size(); i++) {


if (i >= yongALchucundeshuju.size() - 3) {


yongHSchucundedipai.add(yongALchucundeshuju.get(i));


} else if (i % 3 == 0) {


yongHSchucundejiadepai.add(yongALchucundeshuju.get(i));

} else if (i % 3 == 1) {

yongHSchucundeyidedepai.add(yongALchucundeshuju.get(i));

} else if (i % 3 == 2) {

yongHSchucundebingdepai.add(yongALchucundeshuju.get(i));

}

}

System.out.println("底牌:" + yongHSchucundedipai);

System.out.println("甲被發(fā)到的牌:" + yongHSchucundejiadepai);

System.out.println("乙被發(fā)到的牌:" + yongHSchucundeyidedepai);

System.out.println("丙被發(fā)到的牌:" + yongHSchucundebingdepai);


}

}


Java(4種方法和擴展):牌54張,三個人斗地主,給每個人各17牌,并且還要有3張底牌的評論 (共 條)

分享到微博請遵守國家法律
手游| 花垣县| 迁安市| 宜良县| 芜湖县| 丹巴县| 固安县| 皮山县| 宁海县| 志丹县| 阳曲县| 吉林省| 龙山县| 泰和县| 于田县| 临高县| 札达县| 昌吉市| 通许县| 双峰县| 镇远县| 重庆市| 响水县| 资阳市| 江孜县| 麻栗坡县| 梓潼县| 禄丰县| 泽库县| 阿瓦提县| 肃南| 武冈市| 上高县| 张家界市| 邯郸市| 三江| 吴川市| 朝阳区| 清水县| 邵武市| 普兰县|