Java统计给定范围内快乐数数量的代码问题求助
问题核心原因
- 你定义的存储范围上限的变量
nieuwnummer2,在快乐数计算逻辑中被重新赋值覆盖,原始输入的上限值直接丢失 - 现有逻辑仅对初始输入的下限值做了快乐数计算,没有遍历上下限区间的所有数值
- 缺少快乐数的最终判断逻辑(计算到1才是快乐数,否则是循环数)、缺少计数变量
修改方案
步骤说明
- 先将输入的上下限存入独立不会被覆盖的变量,避免计算逻辑覆盖原始范围值
- 封装独立的
isHappyNumber方法判断单个数是否为快乐数,逻辑更清晰 - 新增计数变量,遍历区间内所有数值,符合条件则计数+1
- 最终输出统计结果
修改后完整代码
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
相关产品推荐
相关产品推荐

