java - 如何标记输出并去除零?

标签 java arrays random import return

这是一个模拟掷骰子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/

相关文章:

android - 在 cocos2d-x 中使用 arc4random_uniform

java - 生成 TEXT 列而不是 VARCHAR

java - LibGdx [致命异常] 加载皮肤 .json 文件

java - PersistenceUnit vs PersistenceContext

java - 比较两个包含日期的字符串以检查其中一个是在另一个之前还是之后

javascript - ES6 箭头函数和 array.map

java - Firebase onDisconnect() 不工作

javascript - 仅使用对象的引用从数组中删除对象

c# - 在 .NET 中生成所有整数的随机、非重复序列

php - 如何使用 PHP 在 MySQL 上显示像之前结果一样的序列随机数据?