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

Java多维数组计算方法开发求助:按规则实现差值计算

Fixing Your Java Method Implementation

First, let's walk through the key issues in your current code, then build a correct solution that meets all your requirements step by step:

Key Problems in Your Existing Code

  • Wrong Method Signature: Your method is declared to return int[][], but the requirement expects an integer result (0 for invalid arrays, or the sum difference for valid ones). Also, the method should accept a 2D integer array as input, not generate a random array from scratch.
  • Variable Name Conflict: You're reusing i and j as loop variables, which clashes with the method parameters—this will cause a compile error.
  • Misaligned Logic: Your code generates a random array instead of processing the input array specified in the requirement.
  • Missing Core Calculation: You haven't implemented the logic to compute the middle row sum minus the middle column sum.

Correct Working Implementation

Here's the complete code that fulfills all your needs, including a test with your example:

public class ArrayMiddleSumCalculator {
    public static int calculateMiddleSumDifference(int[][] arr) {
        // First, validate the array meets the odd row/column requirement
        if (arr == null || arr.length == 0 || arr.length % 2 == 0) {
            return 0;
        }
        int columnCount = arr[0].length;
        if (columnCount % 2 == 0) {
            return 0;
        }
        // Optional: Ensure the array is rectangular (all rows have same column count)
        for (int[] row : arr) {
            if (row.length != columnCount) {
                return 0;
            }
        }

        // Find the middle indices (works because counts are odd)
        int middleRowIndex = arr.length / 2;
        int middleColIndex = columnCount / 2;

        // Calculate sum of the middle row
        int middleRowSum = 0;
        for (int num : arr[middleRowIndex]) {
            middleRowSum += num;
        }

        // Calculate sum of the middle column
        int middleColSum = 0;
        for (int[] row : arr) {
            middleColSum += row[middleColIndex];
        }

        // Return the required difference
        return middleRowSum - middleColSum;
    }

    // Test with your sample input
    public static void main(String[] args) {
        int[][] testArray = {
            {2, 4, 6},
            {9, 10, 17},
            {1, 6, 18}
        };
        System.out.println(calculateMiddleSumDifference(testArray)); // Output: 16
    }
}

Breakdown of the Logic

  1. Validation Checks: We first make sure the array isn't null, has an odd number of rows, an odd number of columns, and is rectangular (all rows have the same number of columns). If any check fails, we return 0 as required.
  2. Middle Index Calculation: Since row/column counts are odd, dividing the count by 2 (using integer division) gives us the exact middle index (e.g., 3 rows → index 1).
  3. Sum Calculations:
    • We iterate through every element in the middle row to get its total sum.
    • We loop through each row and add the element at the middle column index to get the column's total sum.
  4. Final Result: We subtract the middle column sum from the middle row sum and return the result.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:15:17