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

Java实现用户输入5个唯一数组元素时重复值校验逻辑异常如何修复

问题根因

  • 外层循环的计数逻辑错误:当前是对所有输入次数计数,不管输入的数值是否符合要求,重复的无效输入也会占用计数额度,循环满5次就直接终止,自然无法收集到足够的唯一值
  • 重复校验与数组赋值逻辑错误:当前内部循环只要遍历到的数组位置元素不等于输入值就直接赋值,会覆盖数组原有数据,且没有统计已存入的有效元素数量,校验逻辑完全失效

修复后代码

import java.util.Scanner;

public class UniqueInput {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int[] answerArray = new int[5];
        // 记录已存入的有效唯一值数量
        int storedCount = 0;
        // 唯一值没存满5个就一直循环
        while (storedCount < 5) {
            System.out.println("Please enter the number");
            int answerUser = in.nextInt();
            boolean isRepeat = false;
            // 仅遍历已存入的元素做重复校验
            for (int w = 0; w < storedCount; w++) {
                if (answerArray[w] == answerUser) {
                    isRepeat = true;
                    break;
                }
            }
            if (isRepeat) {
                System.out.println("REPEATING NUMBER, please enter again");
            } else {
                // 无重复就存入数组对应位置,有效计数+1
                answerArray[storedCount] = answerUser;
                storedCount++;
            }
        }
        // 可选:输出最终收集的5个唯一值验证结果
        System.out.println("Collected unique numbers:");
        for (int num : answerArray) {
            System.out.print(num + " ");
        }
        in.close();
    }
}

核心修改点

  • 将外层固定次数的for循环替换为while循环,终止条件改为已存入的唯一值数量达到5,无效输入不会占用有效计数额度
  • 新增storedCount变量记录已存入的有效元素数量,仅当输入无重复时才递增该变量
  • 重构重复校验逻辑:每次输入后仅遍历已经存入数组的元素判断是否重复,确认无重复后再存入数组的对应位置,不会覆盖原有数据

内容的提问来源于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:48:00