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

如何在Java中声明全局数组与变量?附前缀和实现需求

修正后的前缀和实现

针对你的需求,调整后的代码如下,同时修复了原代码中前缀和计算的逻辑错误:

package Arrays;

public class PrefixSum {
    // 声明为类的静态成员变量,实现全局访问
    private static int[] aux;

    static void sumArray(int arr[]) {
        int n = arr.length;
        // 校验aux长度是否与输入数组一致,不一致则重新初始化
        if (aux == null || aux.length != n) {
            aux = new int[n];
        }
        // 正确计算前缀和
        aux[0] = arr[0];
        for (int i = 1; i < n; i++) {
            aux[i] = aux[i - 1] + arr[i];
        }
    }

    static int getSum(int arr[], int start, int end) {
        // 先确保前缀和数组已正确初始化并计算完成
        sumArray(arr);
        if (start == 0) {
            return aux[end];
        }
        // 补充分号,修复语法错误
        return aux[end] - aux[start - 1];
    }

    public static void main(String[] args) {
        int arr[] = { 2, 5, 7, 3, 4, 5, 3 };
        int start = 2;
        int end = 5;
        System.out.print(getSum(arr, start, end));
    }
}

关键修改说明

  • 全局访问aux:将aux定义为类的静态私有成员变量,类内所有静态方法都能访问它,同时用private限制外部直接修改,保证数据安全性。
  • 匹配数组长度:在sumArray中增加判断,只有当aux未初始化或长度与输入数组不一致时,才重新创建数组,确保两者长度始终匹配。
  • 修复前缀和逻辑:原代码中curr变量未更新,导致计算出的前缀和完全错误,调整为使用aux[i-1] + arr[i]的方式,正确累加前缀和。
  • 修复语法错误:补全getSum方法中return语句的分号,解决编译报错问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 17:05:22