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

Java统计给定范围内快乐数数量的代码问题求助

问题核心原因

  • 你定义的存储范围上限的变量nieuwnummer2,在快乐数计算逻辑中被重新赋值覆盖,原始输入的上限值直接丢失
  • 现有逻辑仅对初始输入的下限值做了快乐数计算,没有遍历上下限区间的所有数值
  • 缺少快乐数的最终判断逻辑(计算到1才是快乐数,否则是循环数)、缺少计数变量

修改方案

步骤说明

  1. 先将输入的上下限存入独立不会被覆盖的变量,避免计算逻辑覆盖原始范围值
  2. 封装独立的isHappyNumber方法判断单个数是否为快乐数,逻辑更清晰
  3. 新增计数变量,遍历区间内所有数值,符合条件则计数+1
  4. 最终输出统计结果

修改后完整代码

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class Main {
    // 独立方法:判断单个数是否为快乐数
    public static boolean isHappyNumber(int num) {
        Set<Integer> record = new HashSet<>();
        // 只要没有出现重复值就继续计算
        while (record.add(num)) {
            int sum = 0;
            // 计算各位平方和
            while (num > 0) {
                int digit = num % 10;
                sum += digit * digit;
                num /= 10;
            }
            num = sum;
            // 计算到1说明是快乐数
            if (num == 1) {
                return true;
            }
        }
        // 出现重复值说明进入循环,不是快乐数
        return false;
    }

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        // 读取输入的上下限
        int lower = Integer.parseInt(scan.nextLine().trim());
        int upper = Integer.parseInt(scan.nextLine().trim());
        scan.close();

        int count = 0;
        // 遍历区间内所有数
        for (int i = lower; i <= upper; i++) {
            if (isHappyNumber(i)) {
                count++;
            }
        }
        // 输出统计结果
        System.out.println("该范围内快乐数的数量为:" + count);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:39:06