如何标记输出并删除零?

vhmi4jdf  于 2021-07-09  发布在  Java
关注(0)|答案(2)|浏览(370)

这是一个程序来模拟滚动骰子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]

ktecyv1j

ktecyv1j1#

要避免0,必须将1添加到nextint输出(它从0开始)。
可以在数组填充期间标记最连续的数字。
像这样的

int length=1;
int defLength=0;
int startIdx=0;
int defStartIdx=0;
int endIdx=0;
int defEndIdx=0;
// Needed in order not to override start index
boolean found = false;
if(efs[i] == efs[i-1]) {
    ++length;
    if(!found) {
        startIdx=i-1;
        found = true;
    }
 } else {
     if(found) {
            endIdx=i-1;
            found=false;
    }
    if(defLength < length) {
           defEndIdx = endIdx;
           defStartIdx = startIdx;
           found = false;
    }
}

然后需要一个print方法,在打印efs[defstartidx]和efs[defendidx]之前插入括号

jfgube3f

jfgube3f2#

我怎样才能使代码不产生零。。。
Random#nextInt(n) 返回一个介于0(包括0)和n(不包括n)之间的数字。您可以将1添加到结果中,将其更改为介于1和n(包括1和n)之间的数字。如果要排除n,请通过 n-1nextInt(...) .
... 标记最连续的数字。。。
你必须自己计算并提供自己的打印程序。
要计算最长的等号行,只需在数组上迭代一次,然后计算每个序列的长度(如果数字不同,则length=1;如果数字相等,则length+=1)。无论何时发现新序列或到达数组末尾,请检查最后一个序列是否比之前最长的序列长,如果是,请更新该序列的起始索引和新的最大长度。
迭代数组进行打印时,检查是否输入了之前计算的序列,如果输入了,则打印 ( . 然后检查是否再次退出序列或点击结尾并打印 ) .

相关问题