2D Java阵列。将负数转为零

时间:2013-11-19 05:14:07

标签: java arrays multidimensional-array

此方法应输入一个2d数组的整数(int[][])并返回2d int数组,所有负数都替换为零。

例如,如果您发送{{4,5,-6},{7,-8,9}},则您的方法应返回{{4,5,6},{7,8,9}}

public static int[][] zeroNegatives(int[][] arr)
{
    for (int r = 0; r < arr.length; r++)
    {
        for (int c = 0; c<arr[r].length; c++)
        {
            if (arr[r][c] < 1)
            {
                arr[r][c]*-1;
            }
        }
    }
    return ;
}

我不确定如何返回二维数组或如何更改二维数组中的元素。

6 个答案:

答案 0 :(得分:1)

尝试:

public static int[][] zeroNegatives(int[][] arr)
{
    for (int r = 0; r < arr.length; r++) // Loop over array of arrays
    {
        for (int c = 0; c<arr[r].length; c++) // Loop over arrays
        {
            if (arr[r][c] < 0) // Check if negative
            {
                arr[r][c] *= -1; // "Change sign"
            }
        }
    }    
    return arr;
}

答案 1 :(得分:0)

您可以使用return arr;简单地返回数组,即您的数组作为参数传递给方法。

答案 2 :(得分:0)

经过测试并正常工作

public static int[][] zeroNegatives(int[][] arr)
{
    for (int r = 0; r < arr.length; r++)
    {
        for (int c = 0; c < arr[r].length; c++)
        {
            if (arr[r][c] < 0) // if it's negative, it's less than 0, not 1
            {
                arr[r][c] *= -1; // it will equal itself multiplied by negative 1
            }
        }
    }
    return arr;
}

答案 3 :(得分:0)

根据说明,例如,如果您发送{{4,5,-6},{7,-8,9}},您的方法应返回{{4,5,6} ,{7,8,9}}

您不会repace all negative values as zerosbut to make it to a absolute value

然后直接返回arr。

public class Test {
public static void main(String[] args) {
    int[][] dataArray = { { 4, 5, -6 }, { 7, -8, 9 } };

    for (int[] array : zeroNegatives(dataArray)) {
        System.out.println(Arrays.toString(array));
    }
}

public static int[][] zeroNegatives(int[][] arr) {
    for (int r = 0; r < arr.length; r++) {
        for (int c = 0; c < arr[r].length; c++) {
            if (arr[r][c] < 0) {
                arr[r][c] *= -1;
            }
        }
    }

    return arr;
}
}

控制台输出:

[4, 5, 6]
[7, 8, 9]

另外,以下代码更改不是必需的,但是当值为0时,它不会执行0 * = -1,这样的操作不是必需的。

在第二次循环中改变条件。

来自

       if (arr[r][c] < 1)
        {
            arr[r][c] *=-1;
        }

        if (arr[r][c] < 0)
        {
            arr[r][c] *= -1;
        }

答案 4 :(得分:0)

public static int[][] zeroNegatives(int[][] arr)
{
int[][] method2DArr = arr;
    for (int r = 0; r < method2DArr.length; r++)
    {
        for (int c = 0; c<method2DArr[r].length; c++)
        {
            if (method2DArr[r][c] < 0)// for batter understanding use this, this is good way to write for negative.
            {
                method2DArr[r][c] = method2DArr[r][c] * (-1) ;
            }
        }
    }
    return method2DArr; //return reference.
 }

对于击球手的理解,试试这个。

简单地回归参考,而不是火箭科学。

&安培;如果你想用arr srick那么你也可以使用

return arr;

答案 5 :(得分:0)

或者,您可以尝试:

public static int[][] zeroNegatives(final int[][] array){
    for(int i = 0; i < array.length; i++)
        for(int j = 0; j < array[i].length; j++)
            array[i][j] = Math.abs(array[i][j]);
    return array;
}

Math.abs(int)返回n的绝对值,即距离0的距离。