wipeout 2023-05-19 12:49 采纳率: 33.3%
浏览 21

java求用键值对的方法实现随机抽一张扑克牌

随机抽取一张扑克牌 输出抽到牌的点数和花型 求用键值对的方法实现


```java

package ch3choose.exec24;/*
 * 孤鸿
 * 2023/5/19
 */

public class Exec24_1 {
    public static void main(String[] args) {
        int i=(int)(Math.random()*52);
        String pattern;
        String point;
        //判断点数
        switch (i%13) {
            case 0:
                point="Ace";
                break;
            case 10:
                point="Jack";
                break;
            case 11:
                point="Queen";
                break;
            case 12:
                point="King";
                break;
            default:
                point=Integer.toString(i%13);
                break;
        }
        //判断花型
        if(i<13){
            pattern="Clubs";
        }
        else if(i>=13&&i<26){
            pattern= "Diamonds";
        }
        else if(i>=26&&i<39){
            pattern= "Hearts";
        }
        else{
            pattern= "Spades";
        }

        System.out.println("The card you picked is "+point+" of "+pattern);
    }
}




方法二 用数组实现的  感觉太繁琐了 

```java
package ch3choose.exec24;/*
 * 孤鸿
 * 随机选取一张扑克牌
 * 2023/5/19
 */

import java.util.Scanner;

public class Exec24 {
    public static void main(String[] args) {
     //   String []arr1=new String[4];
        String [][] arr=new String[4][13]; //生成一个二维数组用来存放牌的花型和牌的点数
     //   String [][]card=new String[arr1.length][arr.length];
        String [] card=new String[52];   //生成一个数组存放所有的牌
        int k=0;
        //存放所有牌型到数组中
        for (int i = 0; i < arr.length; i++) {
            String s1 = "";
            switch (i) {
                case 0:
                    s1 = "Clubs";
                    break;
                case 1:
                    s1 = "Diamonds";
                    break;
                case 2:
                    s1 = "Hearts";
                    break;
                case 3:
                    s1 = "Spades";
                    break;
                default:
                    break;
            }
            for (int j = 0; j < arr[i].length; j++) {
                String s2 = "";
                if (j == 0) {
                    s2 = "Ace";
                } else if (j == 10) {
                    s2 = "Jack";
                } else if (j == 11) {
                    s2 = "Queen";
                } else if (j == 12) {
                    s2 = "King";
                } else {
                    s2 = Integer.toString(j + 1);
                }
                arr[i][j] =s1+" "+s2;
            }
        }
        //将数组的数据复制到数组card中
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                card[k] = arr[i][j];
                k++;
            }
        }
       // System.out.println("请抽取一张牌:");
        int num=(int)(Math.random()*52); //生成一个随机数
        System.out.println("您抽取的牌是:"+card[num]);  //显示抽取的牌的点数


    }
}


  • 写回答

2条回答 默认 最新

  • 创意程序员 2023-05-19 13:22
    关注

    此处键值对是要做什么用?
    方法二不需要生成所有的牌,两个列表,一个是4种花色,一个是13个点数2-A(或者1-K),随机取一个花色和点数合成一张牌。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月19日

悬赏问题

  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line