使用 switch 语句将随机数转换为字符串

Convert a random number to a string using switch statements

我正在尝试编写一个生成随机数 1-4 的程序,然后使用 switch 语句,将每个数字转换为相应的纸牌花色(红桃 1、方块 2、梅花 3、黑桃 4).

Random rand = new Random();
        
int suit;
suit = rand.nextInt(4)+1;
        
switch(suit) {
    case 1:
        String hearts = "hearts";
        break;
    case 2:
        String diamonds = "diamonds";
        break;
    case 3:
        String clubs = "clubs";
        break;
    case 4:
        String spades = "spades";
        break;
}
        

当所有这些都完成并运行时,我仍然只得到自己生成的数字。如果生成数字 2,则不是获取字符串“diamonds”。我的目标是连接一个随机花色,最后是一个随机数与那个花色搭配,所以据我所知,使用 System.out.println();每个开关盒的内部都不是我想要的。

作业说明是:“设计并实现一个名为 Cards 的应用程序,它随机选择一张扑克牌。首先使用随机数生成器 (Random class) 创建一个 1 到 4 范围内的数字。然后使用 switch 语句将数字转换为花色(红心、方块、梅花或黑桃)。接下来,使用随机生成器创建 1 到 13 范围内的随机数。将数字转换为 ace、2、3、等使用另一个 switch 语句。显示花色和所选卡的值。"

您正在使用 switch 语句创建 heart/a diamond/a club/a spade。但请仔细阅读您的说明。它说,“将数字转换为花色”。让我们制作一套,好吗?

Random rand = new Random();
        
int suitNumber = rand.nextInt(4)+1;
String suit = "";

switch(suitNumber) {
    case 1:
        suit = "hearts";
        break;
    case 2:
        suit = "diamonds";
        break;
    case 3:
        suit = "clubs";
        break;
    case 4:
        suit = "spades";
        break;
}

首先,我发现变量存在逻辑错误。我认为您需要一个变量,即纸牌套装的名称,它可以取 4 个不同的值。

此外,为了有 A、J、Q 和 K 以及 2 和 3 等,您的牌号变量也应该是字符串。你没有提到任何操作,所以我认为这是可以的。

我从 Java 开始,所以我经常遇到 Random rand = new Random() 和/或 Scanner sc = new Scanner(System.in) 多次使用相同名称的错误。因此,我会为数字和花色创建使用不同名称的 Random。

import java.util.Random;

public class testRandom {

    public static void main(String[] args) {

        Random randSuit = new Random();
        Random randNumber = new Random();

        String suitName = "";
        String cardName = "";

        int suit;
        int cardNumber;

        suit = randSuit.nextInt(4)+1;
        cardNumber = randNumber.nextInt(13)+1;

        switch(suit) {
            case 1:
                suitName = "Hearts";
                break;
            case 2:
                suitName = "Diamonds";
                break;
            case 3:
                suitName = "Clubs";
                break;
            case 4:
                suitName = "Spades";
                break;
            }

        switch(cardNumber) {
            case 1:
                cardName = "Ace";
                break;
            case 2:
                cardName = "2";
                break;
            case 3:
                cardName = "3";
                break;
            case 4:
                cardName = "4";
                break;
            case 5:
                cardName = "5";
                break;
            case 6:
                cardName = "6";
                break;
            case 7:
                cardName = "7";
                break;
            case 8:
                cardName = "8";
                break;
            case 9:
                cardName = "9";
                break;
            case 10:
                cardName = "10";
                break;
            case 11:
                cardName = "Jack";
                break;
            case 12:
                cardName = "Queen";
                break;
            case 13:
                cardName = "King";
                break;
        }

        System.out.println("I got the " + cardName + " of " + suitName);

    }
}