Java新手排查0-10000随机数各位求和代码不输出和问题
代码问题排查与修复
现有代码的错误点
- 累加变量
sum定义在while循环内部,每次循环都会被重新初始化为0,无法完成数位和的累加计算 System.out.println(sum)放在while循环内部,每次循环都会输出当前的sum值,不会只输出最终总和- 原代码直接修改存储随机数的
num变量,若后续需要复用该随机数会受影响,建议单独用临时变量处理数位拆分 - 类名
test不符合Java编码规范,类名首字母需要大写
修复后的完整代码
import java.util.Random; public class Test { public static void main(String[] args) { Random random1 = new Random(); int num = random1.nextInt(10000); System.out.println("生成的随机数为:" + num); int sum = 0; // 用临时变量处理数位拆分,不修改原随机数 int temp = num; while(temp > 0) { int lastDigit = temp % 10; sum += lastDigit; temp = temp / 10; } System.out.println("数位和为:" + sum); } }
修正说明
- 将
sum变量移到循环外初始化,保证累加逻辑正常,即使随机数生成0时,sum初始值为0也能正常输出正确结果 - 打印sum的语句移到循环结束后,仅输出最终的数位和
- 新增临时变量
temp用来做数位拆分,保留原随机数num的值方便后续复用 - 修正类名符合Java编码规范
内容的提问来源于stack exchange,提问作者eldoon
相关产品推荐
相关产品推荐

