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

Java实现数字首尾相加功能遇死循环问题求助

解决你的Java程序终止问题与数字首尾和计算错误

嘿,我帮你排查下代码里的两个核心问题:程序无法终止,以及首尾数字求和的逻辑错误,顺便帮你实现忽略单个数字的需求~

问题1:程序无法终止的原因

你的代码里用了while(scan.hasNextInt())来读取输入,这个方法是阻塞式的——它会一直等待用户输入整数,直到检测到输入流结束(EOF)。在控制台输入时,你需要手动触发EOF信号:

  • Windows系统:按下 Ctrl + Z 然后回车
  • Linux/macOS系统:按下 Ctrl + D

如果想让程序更友好,也可以加个自定义终止条件,比如输入-1或者特定字符来停止输入,我后面的修正代码里会给你示例。

问题2:首尾数字求和的逻辑错误

原代码里的内层while(num[i]>1)完全写错了!它会让数字一直取模10,直接陷入死循环(比如103进入这个循环后,103%10=3,3>1,又取模10还是3,永远跳不出来)。正确的求首位数字的方式应该是不断把数字除以10,直到它小于10,比如103→10→1,这样就得到首位1;末位数字直接取模10就行。

另外,你还没实现忽略单个数字的需求,需要判断数字是否小于10,是的话跳过输出。

修正后的完整代码

import java.util.*;

public class AddFirstLastDigit {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        ArrayList<Integer> list = new ArrayList<>();

        System.out.println("请输入数字(输入非整数或按Ctrl+Z/Ctrl+D结束输入):");
        while (scan.hasNextInt()) {
            list.add(scan.nextInt());
        }

        // 或者用自定义终止条件,比如输入-1停止:
        // System.out.println("请输入数字(输入-1结束输入):");
        // while (true) {
        //     int input = scan.nextInt();
        //     if (input == -1) {
        //         break;
        //     }
        //     list.add(input);
        // }

        for (Integer number : list) {
            // 忽略单个数字
            if (number < 10) {
                continue;
            }

            // 计算末位数字
            int lastDigit = number % 10;
            // 计算首位数字
            int firstDigit = number;
            while (firstDigit >= 10) {
                firstDigit = firstDigit / 10;
            }

            int sum = firstDigit + lastDigit;
            System.out.println(number + " 的首位与末位之和:" + sum);
        }

        scan.close();
    }
}

代码修改说明

  • 给类名改了个更规范的名字AddFirstLastDigit(Java类名建议大驼峰命名)
  • 增加了友好的输入提示,让用户知道怎么结束输入
  • 修复了首尾数字的计算逻辑:
    • 末位数字直接用number % 10获取
    • 首位数字通过不断除以10,直到数字小于10得到
  • 加入了单个数字的判断,用continue跳过输出
  • 提供了可选的自定义终止条件,你可以根据需求切换使用
  • 最后关闭了Scanner资源,养成良好的资源回收习惯

测试输入3、103、2045,输出会是:

103 的首位与末位之和:4
2045 的首位与末位之和:7

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:29:45