You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何生成唯一值数组 修复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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 01:15:03