「java怎么完成洗牌」java洗牌算法

博主:adminadmin 2022-11-25 03:57:06 49

本篇文章给大家谈谈java怎么完成洗牌,以及java洗牌算法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

请问用java数组编写洗牌程序怎么写?我刚学java,请多指教,谢谢!!!

package xly04;

import java.util.Random;

public class ArrayDemo3 {

/**

* 数组应用:

* 1 随机洗牌

* 2 顺序发牌

*/

public static void main(String[] args) {

String[] cards=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","大王","小王"};

//Random random=new Random();.......(1)

//int index=random.nextInt(10);//[0,10) %10

//System.out.println(index);

//String card=cards[random.nextInt(cards.length)];//长度为8,随机下标[0,8)

//System.out.println(card);//随机的某张牌

for(int i=cards.length-1;i=1;i--){

int j=new Random().nextInt(i);//或者(1)不注销用int j=random.nextInt(i);

String t=cards[i];

cards[i]=cards[j];

cards[j]=t;

}

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

System.out.print(cards[i]+",");

}

System.out.println();//输出回车字符

//顺序发牌:顺序的将每个牌发给每个人

String[] players=new String[]{"马伊琍","文章","六六"};

//int i=0;

//System.out.println(players[i++%players.length]);

//System.out.println(players[i++%players.length]);

//System.out.println(players[i++%players.length]);

//System.out.println(players[i++%players.length]);

//System.out.println(players[i++%players.length]);

//System.out.println(players[i++%players.length]);

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

//i=0,1,2,3,4,5,6,7

String card=cards[i];//card 代表每张扑克牌

String player=players[i%players.length];

//player代表每个玩游戏的人

System.out.println(player+":"+card);

}

}

}

题目:编写程序,模拟扑克游戏中的洗牌过程.(只选红桃模拟)。用java怎么弄?

洗牌过程?一句话就完成洗牌过程了!!

代码如下:

import java.io.IOException;

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

public class CardGame {

public static void main(String[] args) throws IOException {

String[] types={"黑桃","草花","红心","方块"};

String[] value={"2","3","4","5","6","7","8","9","10","J","Q","K","A"};

String[] king={"JOKER","joker"};

ListString cards=new ArrayListString();//将一副牌54张放入待洗牌的集合中

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

for(int j=0;jvalue.length;j++){

cards.add(types[i]+value[j]);//每个花色的2-A

}

}

cards.add(king[0]);//大鬼

cards.add(king[1]);//小鬼

int m=0;

System.out.println("洗牌之前----------------------------------------------------\n");

for(String str:cards)

{

System.out.print(str+"\t");

m++;

if(m%13==0)

System.out.println();

}

Collections.shuffle(cards);//洗牌动作

m=0;

System.out.println("\n\n洗牌之后-----------------------------------------------------\n");

for(String str:cards)//输出洗牌后的结果

{

System.out.print(str+"\t");

m++;

if(m%13==0)

System.out.println();

}

}

}

我在这里把所有的花色都加入一起洗牌了,楼主可根据需要进行特殊花色的洗牌!!你多执行几次就会发现每次洗牌后的牌的位置都不是一样的!!关键在一个洗牌动作的方法!!

java里怎样打乱(洗牌)一个数组

//给你个思路:给要给随机值,该随机值在索引范围内,然后从索引值里面取元素,在该元素对应

//的位置,进行二次随机取其他元素,然后进行交换,就可以了!

//还有更简单的办法,java早就想到了这一点,在集合工具里面就提供该方法,其实他内部也是

//这样的思路,用随机值进行交换!

import java.util.*;

public class ArrayListTest {

public static void main(String[] args) {

Integer[] arr=new Integer[10];

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

arr[i]=i+1;

}

System.out.println("\n原序:"+Arrays.toString(arr)+"\n");//原数组!

ListInteger list=Arrays.asList(arr);//借用集合帮忙排序!

for(Integer a:list) {

Collections.shuffle(list);//随机排序!

System.out.println("随机:"+Arrays.toString(arr));//排序后!

}

}

}

//数字或者数量,你可以随意修改,二维数组也可以照用!

java洗牌算法问题

你指的是Card里的toString方法吧

 public String toString() {

  String aa = suit + " " + num + "  ";

  return aa;

 }

toString这个方法一般在 System.out.print时使用,这个是打印出String,JVM就是默认调用类的toSting方法

注:所有类都有toString方法,默认是当前对象的hashcode,即内存地址

所以在发牌是打印

 public void dealcard()//发牌

    {

        for(int i=0;i52;i++)

        {

            if(i%4==0i!=0){

             System.out.println();  //每发4张牌输出换行

            }

            // 就是这里,默认调用card的toString方法

             System.out.print(card[i]); //依次输出 发的牌

        }

    }

java怎么完成洗牌的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java洗牌算法、java怎么完成洗牌的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-25,除非注明,否则均为首码项目网原创文章,转载请注明出处。