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

Java整数转字符串后逻辑异常:程序返回空ArrayList问题排查

问题排查与代码修正

核心问题分析

  • 字符转数字逻辑错误:
    number.charAt(i)返回的是字符的ASCII值(例如字符'1'对应的ASCII是49),直接强转成int后用于取模,完全不符合你预期的「用数字本身做除数」的逻辑。正确转换方式是number.charAt(i) - '0',这样字符'1'会转换成整数1,以此类推。

  • 添加错误数值到列表:
    你在判断条件前就执行了left++,导致添加到列表的是自增后的left,而非原本符合条件的数。比如left=1时,自增后变成2,你添加的是2而不是1,这直接导致所有符合条件的数都被错误替换。

  • 潜在的除数为0异常:
    若遇到包含0的数字(如10、20),left % 0会抛出ArithmeticException,虽然你的目标输出里没有这些数,但建议添加判断跳过0的情况,避免程序崩溃。

修正后的代码

import java.util.ArrayList;

public class My_first {
    public static void main(String[] args) {
        int left = 1, right = 22;
        ArrayList<Integer> num = new ArrayList<>();
        while (left <= right) {
            String number = Integer.toString(left);
            int count = 0;
            boolean valid = true;
            for (int i = 0; i < number.length(); i++) {
                int digit = number.charAt(i) - '0';
                // 跳过除数为0的情况
                if (digit == 0) {
                    valid = false;
                    break;
                }
                if (left % digit == 0) {
                    count++;
                }
            }
            // 先判断条件,再自增left
            if (valid && count >= number.length()) {
                num.add(left);
            }
            left++;
        }
        System.out.println(num);
    }
}

执行后会输出[1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22],与你的期望一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 04:10:11