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

显示多骰子滚轮的特定输出

施飞驰
2023-03-14

我对java非常陌生,我为自己设定了一个目标,即制作一个掷骰子程序(保持小)。最终目标是能够掷出用户选择的骰子量,并能够让每个骰子具有不同数量的面(如果需要),我让它获得骰子的数量和每个骰子的面数。这是我为它做的代码(可能真的很糟糕,如果是的话,很抱歉):

public class Roller {
   public final Random rando;
   public final int faces;

   public Roller(int faces) {
       this.rando = new Random();
       this.faces = faces;
   }

   public int roll() {
       return 1 + rando.nextInt(faces);
   }
   //above code is not mine I built off what my friend wrote cause i didnt know if i still need it
   public static void main(String[] args) {
       Random rand = new Random();
       Scanner scan = new Scanner(System.in);
       System.out.print("How many dice do you want to roll?\n");
       int D6 = scan.nextInt();
       ArrayList<Integer> list = new ArrayList<>();
       for (int i = 0; i < D6; i++) {
           System.out.print("How many sides does die " + (i + 1) + " have?\n");
           Roller dice = new Roller(scan.nextInt());
           list.add(dice.roll());
       }
   }
}

现在我想显示< code>ArrayList,但我想将其显示为

"骰子1掷出#

掷骰子2 # "

等等,我迷失了如何做到这一点,特别是对于不同数量的骰子。任何帮助都非常感谢。

共有1个答案

赵同
2023-03-14

假设您运行了此命令,现在有一个值列表 [1, 3, 5, 2, 4],并且您希望按说明显示它们。

在main方法中,您有一个列表,因此可以进行一些循环和字符串格式化以获得所需的输出。(编辑为使用printf()而不是String.format())

// in main...
// after list has all it's values
for (int i = 0; i < list.size(); i++) {
    System.out.printf("Dice #%d rolled %d", i+1, list.get(i));
}

请注意,以下语句仍然有效,并且仍然可以应用于 printf(...)

要完成它,字符串格式只是一种格式化字符串的花哨方式(有趣的是,它是如何工作的)。第一个 %d 对应于给定给 format() 的第一个值,即 i 1。它是i 1而不是普通的i,因为否则你会看到“骰子#0掷出......”首先,由于您从 0 开始索引数组和列表。使用 format() 调用中的第二个 %d,您可以传入 list.get(i),这是给定索引处列表中的值。这应该与卷的顺序很好地对应。

这不必使用字符串格式来完成。我发现它往往更好,更容易个人阅读,但它很容易被字符串串联所取代。

//replace the print statement with this if you want
System.out.println("Dice #" + (i+1) + " rolled " + list.get(i));

对我来说,IMO似乎更草率,需要记住留下空格,或者省略串联部分之间的空格可能会很烦人。

 类似资料:
  • 我正试图用python做一个掷骰子程序,给定用户在边、骰子和掷骰子上的输入来掷骰子。目前这段代码或多或少是有效的,但是我遇到的问题是,假设我让< code>3个骰子滚动< code>3次,骰子有< code>6个面。 我的代码显示如下: 当我需要它显示为: 这是我目前为止的代码。我的猜测是,它与我的参数和参数为空有关?我不完全确定。以下是我的代码:

  • 我的任务是创建一个龙与地下城骰子滚动程序,其中四个骰子滚动,最高的三个数字被记录下来,最低的数字被放到一边。 该程序需要使用面向对象编程,这就是我遇到问题的地方。 此外,不能使用嵌套的If语句或循环。 我试图找出如何将每个类彼此分开编码。 我需要一个将运行程序本身的类,一个询问使用程序的人他们想要掷多少组骰子的类,一个实际表示掷骰子集的类,一个表示掷骰子系列的类(这是显示骰子1掷出的骰子,掷出的骰

  • 这是我的主要课程。重点是拿四个不同的六面模具卷,检查哪个卷是最低的,然后把三个最高的卷加在一起,同时告诉用户他们的最低卷是多少。 我遇到的主要问题是制作骰子课。 我知道我需要一个int来保存dice值,一个构造函数来实际创建随机整数,一个getter来实际将随机整数返回到主类。我该怎么做呢? 另一个问题:我如何让用户选择一个集合,然后重新滚动该集合中的最小值?我的意思是,当用户掷骰子时,三个最大的

  • 我们有一项任务来决定骰子游戏的最终赢家。以下是完整的规则: 在这个游戏中,你将与另外两个电脑玩家对决。有三轮。每轮开始时,一个玩家掷两个骰子。你那一轮掷骰子的总数加在你的点数上。你的积分总是从零开始。每连续一轮,积分加到总数上。第三轮结束时,谁的积分最多,谁就赢得比赛。 回溯(最近的调用):2:from rollem 2.rb:83:in'1:from rollem 2.rb:79:in play

  • 我编写了一个包含子类的应用程序,该子类将根据用户输入的边数掷骰子,并使用整数将掷骰子一定次数。 如:用户输入6面,想掷骰子1000次。 我还应该使用一个和我编码的数组相似的数组。 我目前拥有的: 然后,计算器将运行程序并根据程序运行的次数输出百分比,从而...所以像这样... 所需输出: 当前输出:现在我得到的都是返回的相同值,因为我现在用' for '循环所做的都是重复' sum ',不管掷骰子