如何统计指定数值范围内的快乐数数量并修复现有Java代码
快乐数范围查询修正代码
完整可运行代码
import java.util.HashSet; import java.util.Scanner; import java.util.Set; public class Main { // 判断单个数是否为快乐数 private static boolean isHappy(int n) { Set<Integer> loopRecord = new HashSet<>(); // 迭代到结果为1,或者出现循环(非快乐数会进入固定循环)时停止 while (n != 1 && !loopRecord.contains(n)) { loopRecord.add(n); int squareSum = 0; // 计算每一位的平方和 while (n > 0) { int digit = n % 10; squareSum += digit * digit; n /= 10; } n = squareSum; } return n == 1; } public static void main(String[] args) { Scanner scan = new Scanner(System.in); // 读取输入的范围边界 int start = Integer.parseInt(scan.nextLine().trim()); int end = Integer.parseInt(scan.nextLine().trim()); int count = 0; System.out.println("范围内的快乐数:"); // 遍历区间内所有数逐一判断 for (int i = start; i <= end; i++) { if (isHappy(i)) { System.out.print(i + " "); count++; } } System.out.println("\n快乐数总数量:" + count); } }
核心修改点
- 单独封装快乐数判断方法,用HashSet记录已出现的数值,避免非快乐数导致的无限循环
- 修复原代码中边界变量被错误修改的问题,原代码遍历过程中直接修改了范围的起始、结束值,导致遍历逻辑完全失效
- 补充了快乐数的输出和计数功能,遍历区间时逐一校验,符合要求的数值直接打印并累加计数
测试示例
输入:
1 20
输出:
范围内的快乐数: 1 7 10 13 19 快乐数总数量:5
内容的提问来源于stack exchange,提问作者Lucas Winkel
相关产品推荐
相关产品推荐

