如何用Java实现统计指定区间范围内快乐数(Happy Number)的数量
快乐数统计代码补全方案
现有代码问题说明
你当前代码中第一个循环存在严重错误:直接修改了输入的lowerRange、upperRange原始值,会导致后续统计范围完全失效,这部分代码需要先删除。
核心实现逻辑
快乐数的判断核心是:反复计算各位平方和,要么最终得到1(是快乐数),要么进入循环(不是快乐数),用哈希集合记录出现过的数字即可检测循环。
完整修正后代码
import java.util.*; public class Main { // 快乐数判断方法 private static boolean isHappy(int n) { Set<Integer> seen = new HashSet<>(); // 当结果不是1且没有出现循环时继续计算 while (n != 1 && !seen.contains(n)) { seen.add(n); int sum = 0; // 计算当前数的各位平方和 while (n > 0) { int digit = n % 10; sum += digit * digit; n /= 10; } n = sum; } return n == 1; } public static void main(String[] args) { Scanner scan = new Scanner(System.in); String inputLowerRange = scan.nextLine().trim(); String inputUpperRange = scan.nextLine().trim(); int lowerRange = Integer.parseInt(inputLowerRange); int upperRange = Integer.parseInt(inputUpperRange); int counter = 0; // 遍历范围内所有数字统计快乐数 for (int i = lowerRange; i <= upperRange; i++) { if (isHappy(i)) { counter++; } } System.out.println(counter); } }
内容的提问来源于stack exchange,提问作者Aaron Versteegh
相关产品推荐
相关产品推荐

