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
相关产品推荐
相关产品推荐

