如何为Java随机数数组添加连续重复序列(Runs)检测与标记功能?
实现Java连续重复序列(Runs)检测功能
我来帮你搞定这个连续重复序列(Runs)的检测和格式化输出功能!先把你现有代码补全,再实现核心的Runs检测逻辑,下面是完整的解决方案:
完整代码实现
import java.util.Scanner; public class RunDetector { public static void main(String[] args) { Scanner reader = new Scanner(System.in); // 保留你原有的代码结构 int[] numbers = new int[20]; // 生成20个1-6范围内的随机数 for(int i = 0; i < numbers.length; i++) { numbers[i] = (int)(Math.random() * 6 + 1); // 补全随机数生成逻辑,确保是1-6的整数 } // 检测并格式化输出Runs if (numbers.length == 0) { return; } int currentValue = numbers[0]; int runStartIndex = 0; for (int i = 1; i < numbers.length; i++) { if (numbers[i] != currentValue) { // 处理当前结束的序列 printRun(numbers, runStartIndex, i - 1); // 更新当前跟踪的序列信息 currentValue = numbers[i]; runStartIndex = i; } } // 处理最后一段序列,避免遗漏数组末尾的连续值 printRun(numbers, runStartIndex, numbers.length - 1); } // 辅助方法:根据序列长度决定输出格式 private static void printRun(int[] numbers, int start, int end) { if (end - start >= 1) { // 连续重复值≥2个,用()包裹 System.out.print("("); for (int i = start; i <= end; i++) { System.out.print(numbers[i]); if (i != end) { System.out.print(" "); } } System.out.print(") "); } else { // 单个值,直接输出 System.out.print(numbers[start] + " "); } } }
关键逻辑解释
- 随机数生成补全:
Math.random() * 6生成0-6的浮点数,加1后转整数,刚好得到1-6的随机数,完美匹配你的需求。 - Runs检测核心:
- 用
currentValue跟踪当前连续序列的数值,runStartIndex记录序列的起始位置。 - 遍历数组时,一旦遇到不同数值,就调用
printRun处理之前的连续段。 printRun方法判断序列长度:如果长度≥2,就用()包裹输出;否则直接打印单个数字。
- 用
- 边界处理:遍历结束后单独处理最后一段序列,避免漏掉数组末尾的连续重复值。
示例输出
运行程序后,你会得到类似这样的输出:
1 2 (5 5) 3 1 2 4 3 (2 2 2 2) 3 6 (5 5) 6 3 1
内容的提问来源于stack exchange,提问作者e785d
相关产品推荐
相关产品推荐

