java - 编写一个程序,生成 20 次掷骰子的随机序列

标签 java

我在编程方面的经验很少,而且我现在正在大学学习我的第一门编程类(class)。我们在类里面遇到一个问题,要编写一个程序,生成从 1 到 6 的随机数序列,并将括号放在一系列连续数字周围。例如,如果序列为 12553124322223655631,则程序将打印 12(55)31243(2222)36(55)631。

这是我到目前为止的代码:

package inRun;
import java.util.Random;

public class Prob612 {
    public static void main(String args []){
    Random rand = new Random();
    boolean inRun = false;
    int i = 0;

int [] values;
values = new int[20];


    while (i < values.length){
        int j = rand.nextInt(7);
        if (j > 0 && j <= 6){
            values[i] = j;
            i++;
        }
    }

    for (i = 0; i < values.length; i++){
        if (inRun){
            if (values[i] != values[i + 1]){
                System.out.print(")");
                inRun = false;
            }
        }
        if (inRun = false){
            if (values[i] == values[i - 1]){
                System.out.print("(");
                inRun = true;
            }
        }
        System.out.print(values[i]);
    }

    if (inRun){System.out.print(")");}
}

}

当我运行这个程序时,它会打印序列,但不带括号。我想我需要使用增强的 for 循环,但我不知道如何使用这样的程序来做到这一点。任何见解将不胜感激。谢谢。

最佳答案

你已经差不多解决了。需要注意两点:

  • 您在 if 语句中将 boolean 值指定为 false。 (inRun = false) 应为 (inRun == false)
  • 在最后一项上时,您的值[i + 1] 超出了数组。

这应该可以做到。

  boolean inside = false;

  for (int i = 0; i < values.length; i++) {
      if (inside) {
        if (values[i] != values[i - 1]) {
            System.out.print(')');
            inside = false;
        }

      } else {
        if (i < values.length - 1) {
            if (values[i + 1] == values[i]) {
                System.out.print('(');
                inside = true;
            }
        }
      }
      System.out.print(values[i]);
  }

关于java - 编写一个程序,生成 20 次掷骰子的随机序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40491728/

相关文章:

java - JSP 在 Tomcat 中无法正确呈现

java - 获取错误 java.sql.SQLException : No suitable driver found for jdbc:sqlserver://localhost;databaseName=ABC;integratedSecurity=true on Production

java - JNI -- native 方法上的 UnsatisfiedLinkError

Java正则表达式匹配字符串中的所有单词

java - InputStream.read() 在我的缓冲区中丢失或添加了一个值 - 这是怎么回事?

java - 如何在 TabLayout.Tab 上添加删除图标以通过单击添加的删除图标来删除选项卡

java - 4.times闭包的理解

java - Choreographer : Skipped 53 frames! 应用程序可能在其主线程上做了太多工作

java - 带有自定义异常 Java 的密码检查器无输出

java - 无法运行依赖项 main 函数