这是一个模拟掷骰子20次并标记最连续数字的程序,骰子没有0,我不知道如何删除,我是java新手
package diceroll;
import java.util.Random;
public class Roll {
//public static void main(String[] args) {
private static Random generator = new Random();
public static int[] randomIntArray(int length, int n)
{
int [] ems = new int [length];
for (int i = 0; i <ems.length; i++)
ems[i] = generator.nextInt(n);
return ems;
}
}
<小时/>
package diceroll;
import java.util.Arrays;
public class Dice {
public static void main(String[] args) {
int[] ems = Roll.randomIntArray(20,7);
System.out.println(Arrays.toString(ems));
}
}
当它打印时,它会打印如下内容: [4, 2, 2, 5, 2, 0, 5, 0, 5, 5, 1, 3, 3, 3, 1, 4, 3, 1, 4, 4]
如何使代码不生成零并标记最连续的数字,如下所示: [4, 2, 2, 5, 2, 0, 5, 0, 5, 5, 1, (3, 3, 3), 1, 4, 3, 1, 4, 4]
最佳答案
How can I make the code not generate zeros ...
由于 Random#nextInt(n)
返回 0(含)和 n(不包括)之间的数字,因此您只需在结果中添加 1 即可将其更改为 1 和 n(两者)之间的数字包括的)。如果您希望排除 n,请将 n-1
传递给 nextInt(...)
。
... mark the most consecutive numbers ...
您必须自己计算并提供自己的打印例程。
要计算相等数字的最长行,只需迭代数组一次并计算每个序列的长度(如果数字不同,则长度 = 1;如果数字相等,则长度 += 1)。每当您发现新序列或到达数组末尾时,请检查最后一个序列是否比之前最长的序列长,如果是,则更新该序列的起始索引和新的最大长度。
当迭代数组进行打印时,您会检查是否输入了之前计算的序列,如果是,则打印 (
。然后检查是否再次离开该序列或到达末尾并打印)
。
关于java - 如何标记输出并去除零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22329765/