java - 掷骰子游戏作业

标签 java jgrasp

我只是想弄清楚这个作业并需要一些帮助。不寻求答案,只是更好的理解。我对使用 jGRASP java 进行编码非常陌生。老师告诉我们创建这个游戏,生成与此类似的输出。

第一轮:

• 玩家 A 掷骰子:1,2,最高点数为 21 • 玩家 B 掷骰:2,1,最大数字为 21 • 结果:平局

• 第二轮: • 玩家 A 掷骰子:2,5,最高点数为 52 • 玩家 B 掷骰:6,8,最高数字为 86 • 结果:玩家 B 获胜

• 第三轮: • 玩家 A 掷骰子:1,9,最高数字为 91 • 玩家 B 掷骰:9,9 最高数字是 99 • 结果:玩家 B 获胜

• 最终结果:玩家 B 获胜!!!

我是否必须将数字声明为字符串才能连接它们?我是否使用 if else 语句?具体来说,我很困惑如何排列两个数字,如果一个数字大于另一个数字,以便较大的数字将放在前面。

任何帮助,谢谢大家。

祝你有美好的一天!

import java.util.Scanner;
import java.util.Random;

public class beatThat
{
   public static void main(String[] args)
   {
      Random r1 = new Random();
      Random r2 = new Random();
      Random r3 = new Random();
      Random r4 = new Random();

      int die1 = r1.nextInt(6) + 1;
      int die2 = r2.nextInt(6) + 1;
      int die3 = r3.nextInt(6) + 1;
      int die4 = r4.nextInt(6) + 1;

      System.out.println("ROUND 1");
      System.out.println("Player A rolls: " + die1 + " and " + die2 +".");
      System.out.println("Player B rolls: " + die3 + " and " + die4 +".");

      if(die1 >= die2)
      {
         System.out.println("Player A's highest number is: " + die1 + die2);
      }
      else if(die2 >= die1)
      {
         System.out.println("Player A's highest number is: " + die2 + die1);
      }
      if(die3 >= die4)
      {
         System.out.println("Player B's highest number is: " + die3 + die4);
      }
      else if(die4 >= die3)
      {
         System.out.println("Player B's highest number is: " + die4 + die3);
      }

    }
}

最佳答案

稍微简化了您的代码。

import java.util.Random;

public class Main {

public static void main(String[] args) {

    Random r1 = new Random();
    Random r2 = new Random();
    Random r3 = new Random();
    Random r4 = new Random();

    int die1 = r1.nextInt(6) + 1;
    int die2 = r2.nextInt(6) + 1;
    int die3 = r3.nextInt(6) + 1;
    int die4 = r4.nextInt(6) + 1;

    System.out.println("ROUND 1");
    System.out.println("Player A rolls: " + die1 + " and " + die2 +".");
    System.out.println("Player B rolls: " + die3 + " and " + die4 +".");

    Integer aMax = Integer.max(die1*10 + die2, die2*10 + die1);
    System.out.println("Player A's highest number is: " + aMax);

    Integer bMax = Integer.max(die3*10 + die4, die4*10 + die3);
    System.out.println("Player B's highest number is: " + bMax);

    System.out.println("Result: " +
            (!aMax.equals(bMax) ?
                aMax > bMax ? "Player A wins!" : "Player B wins!"
                :
                "Draw!")
    );
}
}

我所做的只是用简单的构建和比较这两个数字来替换不漂亮的 if/else 语句。在这种情况下,有两卷我认为就可以了。如果您考虑更多,也许您应该尝试使用字符串排列并获取值数组的最大值。试试this .

关于数字连接。如果至少有一对位于连接链中的第一位,则无需将它们转换为字符串。

这个例子会让它变得干净:

System.out.println(1 + 2 + "text"); //"3text"
System.out.println(1 + "text" + 2); //"1text3"
System.out.println("text" + 1 + 2); //"text12"

希望对您有帮助。干杯。

关于java - 掷骰子游戏作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50203320/

相关文章:

java - Java 方法不兼容

java - 动态调整 JScrollPane 的大小?

java - 迷宫回溯水平移动

JavaFX:如何在某种文本区域中存储和格式化多个段落?

C 代码错误 以前从未见过

autocomplete - jGRASP 中的 Java 自动完成

java - NetBeans 或 Eclipse 相当于 jGrasp 的调试对象查看器?

java - 部分空指针异常

java - 错误 : Could not find or load main class junit_runner.

Java 编译、包和相对路径