这是一个程序来模拟滚动骰子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,5,1,(3,3,3),1,4,3,1,4,4]
2条答案
按热度按时间ktecyv1j1#
要避免0,必须将1添加到nextint输出(它从0开始)。
可以在数组填充期间标记最连续的数字。
像这样的
然后需要一个print方法,在打印efs[defstartidx]和efs[defendidx]之前插入括号
jfgube3f2#
我怎样才能使代码不产生零。。。
自
Random#nextInt(n)
返回一个介于0(包括0)和n(不包括n)之间的数字。您可以将1添加到结果中,将其更改为介于1和n(包括1和n)之间的数字。如果要排除n,请通过n-1
至nextInt(...)
.... 标记最连续的数字。。。
你必须自己计算并提供自己的打印程序。
要计算最长的等号行,只需在数组上迭代一次,然后计算每个序列的长度(如果数字不同,则length=1;如果数字相等,则length+=1)。无论何时发现新序列或到达数组末尾,请检查最后一个序列是否比之前最长的序列长,如果是,请更新该序列的起始索引和新的最大长度。
迭代数组进行打印时,检查是否输入了之前计算的序列,如果输入了,则打印
(
. 然后检查是否再次退出序列或点击结尾并打印)
.