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