Java数组减法

时间:2018-03-16 08:41:47

标签: java arrays multidimensional-array

我需要创建一个方法,将一个整数的多维数组作为参数,并执行以下操作:

  • 检查行数和列数是否为奇数,否则返回0.

  • 如果数组是奇数,则该方法返回该项的总和 中间一行,减去中间一列。

例如:

2  4  6

9  10 17

1  6  18

此示例应返回:(9 + 10 + 17) − (4 + 10 + 6) = 36 − 20 = 16

这是我到目前为止所做的:

static int [][] sub(int i , int j) {

    if (i%2 == 0 || j%2 == 0) 
    return 0;

    else
    int[][] tab = new int[i][j];

    // Create array with values from 0 to 99 randomly
    for (int i = 0; i < tab.length; i++) {
         for (int j = 0; j < tab[i].length; j++) {
             tab[i][j] = (int) (Math.random() * 99);
         }
     }
}

在那之后,我真的不知道该怎么做..感谢您帮助我

2 个答案:

答案 0 :(得分:0)

我想你需要这样的东西

static int sub(int i , int j) {
    int result;
    int[][] tab = new int[i][j];
    if (i % 2 == 0 || j % 2 == 0) {
        result = 0;
    }
    else {
        // Create array with values from 0 to 99 randomly
        for (int k = 0; k < i; k++) {
            for (int l = 0; l < j; l++) {
                tab[k][l] =(int)(Math.random()*99);
            }
        }
        int horizontalSum = 0;
        int verticalSum = 0;

        for(int k = 0; k<i; k++){
            horizontalSum+=tab[(i/2)][k];
        }
        for(int l = 0; l<j; l++){
            verticalSum += tab[l][(j/2)];
        }
        result = horizontalSum-verticalSum;
    }
    return result;
}

祝你的家庭作业好运。 -_-

答案 1 :(得分:0)

您的方法需要两个integeres作为参数,而不是二维数组。相反,当它应该返回一个int时,它返回一个二维数组。

实际上这是:

static int [][] sub(int i , int j) {

    if (i%2 == 0 || j%2 == 0) 
    return 0;
           ^

是编译时错误。你决定返回一个二维整数数组,但你只是返回一个整数。

我认为你的方法应该是这样的:

static int sub(int[][] array)
{
    if (array.length % 2 == 0) return 0;
    for (int[] x : array)
    {
        if (x.length % 2 == 0) return 0;
    }


    int result = 0;
    int middle = array.length / 2;

    for (int i : array[middle])
    {
        result += i;
    }

    for (int i = 0; i < array[middle].length; i++)
    {
        result -= array[i][middle];
    }

    return result;
}