如何生成唯一值数组 修复Java实现时首元素恒为0的问题
问题根因
- Java中int数组初始化后,所有元素默认值为
0,你的外层for循环从索引1开始遍历赋值,索引为0的第一个元素从未被修改,因此始终是0 - 代码中定义的
random_first变量未实际赋值给数组0号索引,且该行末尾多写了一个右括号,存在语法错误 - 原有去重逻辑存在缺陷:重复时重置
uniqueNumber = 0后,下一轮循环会自动执行++uniqueNumber,跳过0号索引的校验,可能生成重复值
修复后可运行代码
import java.util.Random; import java.util.Scanner; public class UniqueRandomArray { public static void main(String[] args) { Random r = new Random(); Scanner in = new Scanner(System.in); int generatedNumbers = 0; int winningSum = 0; int[] list = new int[10]; // 外层循环从0开始,给所有数组元素赋值 for (int number = 0; number < list.length; ++number) { int tmp; boolean isDuplicate; // 去重校验逻辑优化 do { isDuplicate = false; tmp = r.nextInt(99); for (int uniqueNumber = 0; uniqueNumber < number; ++uniqueNumber) { if (list[uniqueNumber] == tmp) { isDuplicate = true; break; } } } while (isDuplicate); list[number] = tmp; } for (int element : list) { System.out.println(element); } } }
核心修改说明
- 外层遍历从索引0开始,覆盖数组所有位置的赋值
- 优化去重逻辑,用do-while循环确保每次生成的随机数与所有已赋值的元素无重复,避免原逻辑的校验遗漏问题
- 删除无效的
random_first变量声明,修复语法错误
内容的提问来源于stack exchange,提问作者Ruslan Pylypiuk
相关产品推荐
相关产品推荐

