Java 随机骰子发生器

Java 随机骰子发生器,java,random,compare,Java,Random,Compare,运行是相邻重复值的序列。编写一个程序,生成一系列随机掷骰,并打印骰子值,仅标记最长运行时间。程序应将掷模总数(ex 10)作为输入,然后打印: 1 6 3(2 2 2)5 2 我对如何比较每个数字以得到正确的输出感到困惑。可能使用数组来存储值。任何答案或输入都会有帮助,谢谢 import java.util.Random; import java.util.Scanner; public class Dice { Random generator = new Random(); Sc

运行是相邻重复值的序列。编写一个程序,生成一系列随机掷骰,并打印骰子值,仅标记最长运行时间。程序应将掷模总数(ex 10)作为输入,然后打印:

1 6 3(2 2 2)5 2

我对如何比较每个数字以得到正确的输出感到困惑。可能使用数组来存储值。任何答案或输入都会有帮助,谢谢

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

 public class Dice 
 {
Random generator = new Random();
Scanner keyboard = new Scanner(System.in);

public void DiceCount()
{
int count;
int sides = 6;
int number;
System.out.println("How many die? ");
count = keyboard.nextInt();
for(int i=0; i < count; i++)
{
    number =  generator.nextInt(sides);
    System.out.print(number);
}

}
import java.util.Random;
导入java.util.Scanner;
公共类骰子
{
随机生成器=新随机();
扫描仪键盘=新扫描仪(System.in);
公营机构数目
{
整数计数;
内边=6;
整数;
System.out.println(“有多少个模具?”);
count=键盘.nextInt();
for(int i=0;i

}

首先,替换
整数带有
int[]数字=新的int[count]。接下来,将
number=…
替换为
number[i]=…

这将给你一个随机数数组(不要打印它们!)。生成数字时,请注意一行中有多少相等的数字(为此添加一个特殊计数器)。还添加存储迄今为止最长运行长度的变量。每次你得到一个等于前一个数的数,增加计数器;否则,将计数器与最大值进行比较,必要时更改最大值,并将计数器设置为
1
。更新最大值时,标记运行开始的位置(您可以从当前位置和运行的长度判断)

现在是检测最长运行时间的时候了:遍历
numbers
数组,在开始运行的地方放一个左括号。在运行结束时放入一个右括号,并完成打印以完成分配的输出。

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

public class Dice {
    Random generator = new Random();
    Scanner keyboard = new Scanner(System.in);

    public void DiceCount() {
        int sides = 6;
        System.out.println("How many die? ");
        int count = keyboard.nextInt();
        int[] array = new int[count];
        int longestLength = 1, currentLength = 1, longestLengthIndex = 0, currentLengthIndex = 1;
        int currentNum = -1;
        for (int i = 0; i < count; i++) {
            array[i] = generator.nextInt(sides);
            System.out.print(array[i] + " ");
            if (currentNum == array[i]) {
                currentLength++;
                if (currentLength > longestLength) {
                    longestLengthIndex = currentLengthIndex;
                    longestLength = currentLength;
                }
            } else {
                currentLength = 1;
                currentLengthIndex = i;
            }
            currentNum = array[i];
        }
        System.out.println();
        for (int i = 0; i < count; i++)
            System.out.print((i == longestLengthIndex ? "(" : "") + array[i] + (i == (longestLengthIndex + longestLength - 1) ? ") " : " "));
    }
}
导入java.util.Scanner; 公共类骰子{ 随机生成器=新随机(); 扫描仪键盘=新扫描仪(System.in); 公营机构数目{ 内边=6; System.out.println(“有多少个模具?”); int count=keyboard.nextInt(); int[]数组=新的int[count]; int longestLength=1,currentLength=1,longestlenghthindex=0,currentlenghthindex=1; int currentNum=-1; for(int i=0;i最长长度){ longestLengthIndex=当前Lengthindex; longestLength=当前长度; } }否则{ 电流长度=1; currentLengthIndex=i; } currentNum=数组[i]; } System.out.println(); for(int i=0;i
注意:这只会占用第一个最长的范围。所以,如果你有1123335666,它将做112(333)5666。 如果你需要112(333)5(666)或1123335(666),那么我就留给你了。它非常简单。

导入java.util.Random;
公共类骰子{
公共静态void main(字符串[]args){
//卷
Random rand=新的Random();
int[]数组=新的int[20];
int longestRun=1;
int currentRun=1;
int longestrenstart=0;
int currentRunStart=1;
System.out.print(“生成的数组:\n”);
for(int i=0;i长时间运行){
LongEstronStart=currentRunStart;//将索引设置为最新运行
longestRun=currentRun;//将上述记录设置为当前运行
}
}否则{
//如果新号码与上一个号码不同。。。
currentRun=1;//重置当前运行长度
currentRunStart=i;//重置当前运行开始索引
}
}
//记录结果
System.out.print(“\n标识最长运行时间:\n”);
对于(int i=0;i
尝试使用
列表(可能是
数组列表)
。1。是的,您可以使用数组,2。学习使用循环,这样您就可以遍历数组来完成工作。3.学习正确缩进代码。4. <代码>怎么可能死亡?
制作一个包含长度计数的数组并将数字存储在其中听起来太残忍了。跟踪4个变量:最长重复序列的长度、当前序列的长度、最长重复序列开始的索引以及当前重复序列的开始索引。感谢buddy对我的帮助