将两副牌,也就是108张,发给4个人,并留8张底牌,最后输出底牌和每个人手中的牌
牌的花色规则:
红桃按照从小到大依次为:1~13方块按照从小到大依次为:14~26黑桃按照从小到大依次为:27~39梅花按照从小到大依次为:40~52小王为53,大王为54.源代码:
package 课本例题第三章数组; import java.util.*; public class Example_3_数组实训任务 { //编写一个模拟的java发牌程序,要将两副牌,也就是108张,发给4个人,并留8张底牌,最后输出底牌和每个人手中的牌 public static void main(String[] args) { // TODO 自动生成的方法存根 int[]total=new int[108];//存储108张牌的数组 int[][]player=new int[4][25];//存储4名玩家的牌 int leftNum=108; int ranNumber; Random random=new Random();//生成Random对象,用以生成随机数 for(int i=0;i<total.length;i++) {//初始化一维数组 total[i]=(i+1)%54; if(total[i]==0) total[i]=54; } //循环发牌 for(int i=0;i<25;i++) { for(int j=0;j<player.length;j++) {//为每个人发牌 ranNumber=random.nextInt(leftNum);//生成随机下标ranNumber,该方法的作用是生成一个随机的int值,该值介于[0,n)的区间,也就是0到n之间的随机int值,包含0而不包含n。 player[j][i]=total[ranNumber];//发牌 total[ranNumber]=total[leftNum-1];//删除已经发过的牌,用位于leftNum-1覆盖 leftNum--;//剩余牌数减一 } } //循环输出玩家手中的牌 for(int i=0;i<player.length;i++) { System.out.print("玩家"+i+"的牌:"); for(int j=0;j<player[i].length;j++) System.out.print(" "+player[i][j]); System.out.println(); } //底牌 System.out.print("底牌:"); for(int i=0;i<8;i++) System.out.print(" "+total[i]); System.out.println(); } }