当前位置: 首页 > 知识库问答 >
问题:

21点java随机。nextInt公司

洪哲彦
2023-03-14
public class BlackJack {
    public static void main(String args[]) {
        String input;
        char reDo;
        Scanner keyboard = new Scanner (System.in);
        Random random = new Random();
        int card1 = random.nextInt(10) + 1;
        int card2 = random.nextInt(10) + 1;
        int card = random.nextInt(10) + 1;
        int total1 = card1 + card2;
        int total2 = total1 + card;

        System.out.print("First cards: " + card1 + ", " + card2 + "\n");
        System.out.print("Total: " + total1 + "\n");

        boolean loop = true;
        while (loop) {
            System.out.print("Do you want another card? (y/n): ");
            input = keyboard.nextLine();
            reDo = input.charAt(0);
            if (reDo == 'y' || reDo == 'Y') {
                System.out.print("Card: " + card + "\n");
                System.out.print("Total: " + total2 + "\n");
            } else if (reDo == 'n' || reDo == 'N') {
                loop = false;
            }
        }
    }
}

输出如下:

第一张牌:8张,3张总共:11张你想要另一张牌吗?(是/否):是的,卡片:7张,总共:18张,你想要另一张卡片吗?(是/否):是的,卡片:7张,总共:18张,你想要另一张卡片吗?(是/否):n

我希望能够在循环中生成一张新的随机卡,显示重复出现的总数,并停止程序。我不明白的问题是如何使用random.nextInt工具,并能够更容易地重复使用它。目前它被卡在card1、card2、card、总计1和总计2中。如果我能制作它们,这样我就可以更容易地访问它们,我认为程序会更容易编写。问题是我不明白如何在while循环中重复random.nextInt。

共有1个答案

徐翔
2023-03-14

首先把所有的牌放在一副牌里。

然后生成一个介于0和牌组中的牌数之间的随机数。

如果卡组是一个ArrayList(例如),您可以做

import java.util.*;


public class Main
{

    public static void main(String[] args)
    {
        List<Card> deck = new ArrayList<Card>();
        deck.add(new Card(1));
        deck.add(new Card(3));
        deck.add(new Card(7));
        deck.add(new Card(10));

        Random randomGenerator = new Random(); 

        System.out.println("Deck 1 tests");
        // draw 3 cards:
        for (int i = 0; i < 3; i++)
        {
            int randomCard = randomGenerator.nextInt(deck.size());
            Card card = deck.remove(randomCard);
            System.out.println("Removed a(n) "+card);
        }

        // you could also do
        List<Card> deck2 = new ArrayList<Card>();
        deck2.add(new Card(1));
        deck2.add(new Card(7));
        deck2.add(new Card(3));
        deck2.add(new Card(10));

        Collections.shuffle(deck2);
        System.out.println("Deck 2 tests");
        // draw 3 cards:
        for (int i = 0; i < 3; i++)
        {
            Card card = deck2.remove(0);
            System.out.println("Removed a(n) "+card);
        }


    }

}

class Card {
    public Card(int i)
    {
        blackJackValue = i;
    }

    public int blackJackValue;

    public String toString() {
        return String.valueOf(blackJackValue);
    }
}
 类似资料:
  • 5.5公告,随机分组 电脑端暂不支持发布公告和随机分组活动,需要在手机APP端操作,具体操作请查看【APP指南-老师版手册】。

  • 这将起作用,并产生一个预期随机长度的列表-从1到120的值。但是,以下代码不是: 重复了一亿次,几次,保存的值最多是62个。 造成这种差异的原因是什么?

  • 我听说nextInt()只读取整数,忽略末尾的\n。那么为什么下面的代码会成功运行呢? 为什么在我们输入a的值后没有错误,因为\n必须保留在缓冲区中,所以在b处使用nextInt()应该会给出一个错误,但它没有。为什么啊?

  • 问题内容: 当他每次运行程序时都不断获得相同的数字时,我试图向Java解释随机数生成器。我为同一件事创建了自己的简单版本,每次运行该程序时,我也得到了与他得到的确切数字相同的数字。 我究竟做错了什么? 100个数字中的最后五个数字是: 问题答案: 您已经为随机数生成器提供了恒定的值。它是确定性的,因此每次运行都会生成相同的值。 我不确定您为什么选择使用作为种子,但是种子值与生成的值范围无关(这是由

  • 我想从randomInts(int-num,int-start,int-end)中获取随机数,并将这些数放入数组。 我试着做