Java 随机骰子发生器
运行是相邻重复值的序列。编写一个程序,生成一系列随机掷骰,并打印骰子值,仅标记最长运行时间。程序应将掷模总数(ex 10)作为输入,然后打印: 1 6 3(2 2 2)5 2 我对如何比较每个数字以得到正确的输出感到困惑。可能使用数组来存储值。任何答案或输入都会有帮助,谢谢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
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对我的帮助