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

Java程序报错求助:编程1作业连续重复数字检测功能问题

解决Java中找出数字相邻重复两位的问题

嘿,我懂你在《编程1》Java作业里碰到的麻烦了——要从用户输入的数字里找出所有相邻且重复的两位数,而且题目贴心地说明不会有三个连续相同的数字,比如输入133455662要输出356对吧?虽然你没贴完整的报错代码,但我可以先帮你梳理这类需求的常见坑,再给你一个能正常运行的实现,你可以对照自己的代码找找问题~

常见的错误点(你可能踩了这些坑)

  • 直接对数字做取模、除法操作拆分每一位:这种方式容易处理不好位数,尤其是数字长度不确定的时候,还可能因为正负号出问题
  • 循环边界没处理对:比如遍历到最后一个字符时还去取下一位,直接抛出StringIndexOutOfBoundsException
  • 没跳过已处理的重复位:比如碰到33时连续两次添加3,导致输出结果重复

正确的实现代码

import java.util.Scanner;

public class AdjacentDuplicateFinder {
    public static void main(String[] args) {
        Scanner inputScanner = new Scanner(System.in);
        System.out.print("请输入目标数字:");
        String numStr = inputScanner.nextLine();
        
        StringBuilder duplicateDigits = new StringBuilder();
        
        // 遍历到倒数第二位即可,避免索引越界
        for (int i = 0; i < numStr.length() - 1; i++) {
            char current = numStr.charAt(i);
            char nextChar = numStr.charAt(i + 1);
            
            if (current == nextChar) {
                duplicateDigits.append(current);
                // 跳过下一位,因为题目没有三个连续相同的数字,不用重复检查
                i++;
            }
        }
        
        System.out.println("相邻重复的数字为:" + duplicateDigits.toString());
        inputScanner.close();
    }
}

代码说明

  • 把输入转换成字符串处理:字符直接比较比拆分数字简单太多,完全不用考虑数字的长度和正负问题
  • 用StringBuilder拼接结果:比直接用+=拼接字符串效率更高,尤其是输入数字较长的时候
  • 循环里的额外i++:因为题目保证没有三个连续相同的数字,所以碰到重复对之后直接跳过下一位,避免重复添加同一个数字
  • 边界控制:i < numStr.length() - 1确保每次i+1都不会超出字符串的索引范围

你可以把自己的代码和这个版本对比下,看看是不是某个环节没处理好,比如循环边界、字符比较的逻辑,或者输入处理的方式~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:59:09