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

Java实现10个整数去重功能运行结果异常排查问询

代码运行异常原因分析
  • 直接原因:唯一值判断的计数条件写错
    你需要验证当前第i位元素和前面的i个元素(下标范围0~i-1,共i个元素)全部不重复,所有比较都不相等时,count的值应该等于i,但你的判断条件写为count == i-1。
    以你输入的1234567891为例,i=1(对应元素2)时,前面只有下标0的元素1,比较后不等count值为1,此时判断1 == 0(i-1=0)条件不成立,所以2不会被追加到结果中,后续所有i>=1的元素都无法满足判断条件,最终结果只有第一个元素1。
  • 潜在逻辑漏洞:现有去重逻辑冗余且有判错风险
    你当前的逻辑是只要和前序某一位元素不等就累加count,就算存在重复元素,只要其他位不等count仍会累加,极端场景下可能出现误判。更合理的逻辑是只要找到一个和当前元素相等的前序值,就直接标记为重复、跳出内层循环,无需继续比较剩余元素。

修正后可正常运行的代码

//setup
Scanner input = new Scanner(System.in);
String text = input.nextLine();
text = text.replaceAll("\\s",""); //remove all spaces
int[] intDigits = new int[10];

//turn the string into an int array
for (int i = 0; i < 10; i++){
    intDigits[i] = text.charAt(i) - '0';
}
input.close();

StringBuilder pl = new StringBuilder();
// 遍历所有元素判断是否唯一
for (int i = 0; i < 10; i++) {
    boolean isUnique = true;
    // 和前序所有元素比较
    for (int j = 0; j < i; j++) {
        if (intDigits[i] == intDigits[j]) {
            isUnique = false;
            break; // 找到重复直接跳出,无需继续比较
        }
    }
    if (isUnique) {
        pl.append(intDigits[i]).append(" ");
    }
}
System.out.println("\n\npl: " + pl.toString().trim());

输入1234567891时,上述代码输出结果为pl: 1 2 3 4 5 6 7 8 9,符合需求。

内容的提问来源于stack exchange,提问作者aiden redmond

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:54:06