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

Java生成指定范围随机数组并计算总和问题求助

问题分析与修正方案

你的代码存在这些核心问题:

  • 随机数范围错误:你用min + rand.nextInt(max) * 2生成的数实际范围是[-250, 248],无法达到250。正确的区间计算应该是先算总长度(250 - (-250) = 501),用rand.nextInt(501)得到[0,500]的数,再加min(-250)才能覆盖[-250,250]。
  • 变量作用域问题:第二段代码里rez定义在for循环内部,循环结束后外部无法访问,所以会报"Cannot resolve symbol 'rez'"错误。
  • 总和逻辑错误:你每次循环里sum = rez + rez只是把当前数字翻倍,不是累加所有数字的总和;且第一段代码每次循环都打印"总和",不符合你"仅在末尾打印总和"的要求。
  • 打印内容错误:你打印的是循环次数i,不是生成的随机数rez,和"打印每个数字"的需求不符。

修正后的完整代码

import java.util.Random;

public class Main {
    public static void main(String[] args) {
        Random rand = new Random();
        int max = 250;
        int min = -250;
        // 总和变量定义在循环外部,保证持续累加
        int totalSum = 0;

        for (int i = 1; i <= 50; i++) {
            // 正确生成[-250,250]范围的随机数
            int rez = min + rand.nextInt(max - min + 1);
            // 打印生成的随机数,而非循环次数
            System.out.println("The number is : " + rez);
            // 累加当前数字到总总和
            totalSum += rez;
        }
        // 循环结束后打印最终总和
        System.out.println("The total sum is: " + totalSum);
    }
}

关键修正说明

  • 变量作用域:将totalSum放在循环外,确保每次循环都能对同一个变量累加,循环结束后可访问最终值。
  • 随机数生成:rand.nextInt(max - min + 1)生成[0, max-min]的整数,加上min后刚好覆盖目标区间[min, max]。
  • 总和逻辑:用totalSum += rez实现所有随机数的累加,替换错误的翻倍操作。
  • 打印内容:把打印的i改为rez,确保输出的是生成的随机数字。

内容的提问来源于stack exchange,提问作者Pop Raluca

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 13:15:42