java我怎么读一个负int作为积极的

时间:2018-04-22 17:34:49

标签: java arrays sum

手头的问题是:

  

该方法应为每一行计算绝对值的总和   该行的元素。该方法应返回最大值   这些总和。例如,如果应用于测试数组,则为方法   应该返回值max(3 + 1 + 4 + 0,5 + 9 + 2 + 6,5 + 3 + 7 + 8)= max(8,22,23)   = 23.

测试数组:

3 -1  4  0
5  9 -2  6 
5  3  7 -8

到目前为止,我已经创建了一个获取所有行值的方法,并将列表中的总和返回给我;但是,我希望它将负整数转化为正整数。 到目前为止,这是我的代码:

public static int[] rowSums(int[][]array) {
int[] a = new int[array.length];
    for (int i = 0;i<array.length;i++){
        int sum = IntStream.of(array[i]).sum();
        a[i]=sum;


} return a;}

输出:

[6,18,7]

6 个答案:

答案 0 :(得分:2)

您可以使用Math#abs(代表绝对值)将任何负数转换为正数:

int sum = IntStream.of(array[i]).map(Math::abs).sum();

如果您想丢失那些for循环,您甚至可以坚持使用流:

public static int[] rowSums(int[][] array) {
    return Arrays.stream(array)
                 .mapToInt(i -> Arrays.stream(i).map(Math::abs).sum())
                 .toArray();
}

答案 1 :(得分:2)

您可以在这里使用地图。所以代码就是这样。

public static int[] rowSums(int[][]array) {
int[] a = new int[array.length];
    for (int i = 0;i<array.length;i++){
        int sum = IntStream.of(array[i]).map(n->{
            if(n<0) {
                return n*-1;
            }
            else {
                return n;
            }
        }).sum();
        a[i]=sum;


} return a;}

在这里,我只是将所有负整数变为正数。

答案 2 :(得分:1)

更新此行
int sum = IntStream.of(array[i]).sum();

int sum = IntStream.of(array[i]).map(Math::abs).sum();

整个矩阵的解决方案(此片段将返回23):

Optional<Integer> maxVal = Arrays.stream(matrix)
    .map(array -> Arrays.stream(array).map(Math::abs).sum())
    .reduce(Integer::max);

没有可选

int maxVal = Arrays.stream(matrix)
    .map(array -> Arrays.stream(array).map(Math::abs).sum())
    .reduce(Integer::max).get();

答案 3 :(得分:0)

只需使用:

Math.abs(var)

如果变量为负,则会将var变为正值。

因此,完整的答案如下:

public static int[] rowSums(int[][]array) {
int[] a = new int[array.length];
    for (int i = 0;i<array.length;i++){
        int sum = IntStream.of(array[i]).map(Math::abs).sum();
        a[i]=sum;


} return a;}

答案 4 :(得分:0)

使用Math.abs()它会接受任何数字并将其作为正数返回。你需要它在这一行:

int sum = IntStream.of(array[i]).sum();

array[i]并使其绝对。所以

IntStream.of(Math.abs(array[i]).sum();

答案 5 :(得分:0)

将所有数字更改为正数。这可以使用Math.abs(int)完成。请查看link