Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java如何将负int读入正int_Java_Arrays_Sum - Fatal编程技术网

java如何将负int读入正int

java如何将负int读入正int,java,arrays,sum,Java,Arrays,Sum,目前的问题是: 该方法应计算每行的绝对值之和 该行元素的。该方法应返回的最大值为 这些钱。例如,如果应用于测试数组,则 应返回最大值(3+1+4+0,5+9+2+6,5+3+7+8)=最大值(8,22,23) =23 测试阵列: 3 -1 4 0 5 9 -2 6 5 3 7 -8 到目前为止,我已经制作了一个方法,该方法获取所有行的值,并将列表中的总和返回给我;但是,我希望它能把负整数变成正整数。 以下是我目前的代码: public static int[] rowSums(i

目前的问题是:

该方法应计算每行的绝对值之和 该行元素的。该方法应返回的最大值为 这些钱。例如,如果应用于测试数组,则 应返回最大值(3+1+4+0,5+9+2+6,5+3+7+8)=最大值(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;}
只需使用:

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;}
公共静态int[]行和(int[][]数组){
int[]a=新的int[array.length];
对于(int i=0;i,您可以使用(代表绝对值)将任何负数转换为正数:

int sum = IntStream.of(array[i]).map(Math::abs).sum();
如果你想失去那些for循环,你甚至可以坚持使用streams:

public static int[] rowSums(int[][] array) {
    return Arrays.stream(array)
                 .mapToInt(i -> Arrays.stream(i).map(Math::abs).sum())
                 .toArray();
}
使用
Math.abs()
它将接受任何数字并将其作为正数返回。您需要在此行中使用它:

int sum = IntStream.of(array[i]).sum();
把数组[i]
变成绝对值,所以

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

这里你可以使用地图,所以代码是这样的

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;}
公共静态int[]行和(int[][]数组){
int[]a=新的int[array.length];
对于(int i=0;i{

如果(n将所有数字更改为正数。这可以使用
Math.abs(int)
完成。检查。

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


intsum=IntStream.of(数组[i]).map(数学::abs).sum();

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


Math.abs
不接受
int[]
参数。而且你也没有在任何地方接受max。@AndyTurner谢谢,我错过了。修复了它。@Andy Turner-在你提到它之前,我知道。很好地抓住了它们。
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;}
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();