gpt4 book ai didi

java - 打印从函数返回的总和数组不会打印总和

转载 作者:行者123 更新时间:2023-12-02 10:06:30 25 4
gpt4 key购买 nike

任务是返回一维数组中二维数组每一行的总和。

示例

int[][] values = {  
{1, 2, 3, 4, 5}, {2, 3, 4, 5, 1},
{3, 4, 5, 1, 2}, {4, 5, 1, 2, 3},
{5, 1, 2, 3, 4}
};

我要打印:行总和:15 15 15 15 15

代码

public int[]allRowSums()
{
int rowSum = 0;
int current = 0;
int[]a = null;
for(int i = 0; i < values.length; i++)
{
a = new int[values[i].length];
for(int j = 0; j < values[current].length; j++)
{
rowSum = values[current][j];
a[i] += rowSum;
}
rowSum = 0;
current++;
}
return a;
}

当我调用这个方法时,我得到:行总和:[I@15db9742

最佳答案

代码修复

如果正确打印并首先将数组转换为字符串,当前实现会以某种方式返回 0, 0, 0, 0, 15:

System.out.println(Arrays.toString(array));

发生这种情况是因为您总是刷新第一个(外部)for 循环中的所有值。执行以下操作

int rowSum = 0;
int current = 0;
int[] a = new int[values.length]; // proper initialization to avoid NPE
for (int i=0; i<values.length; i++) {
// this line removed
for (int j=0; j<values[current].length; j++) {
rowSum = values[current][j];
a[i] += rowSum;
}
rowSum = 0;
current++;
}
return a;

现在代码可以正常工作,并将在您的示例中包含 15, 15, 15, 15, 15

更好的解决方案

Stream API 适合此用例。 Collection 家的正确组合Collectors::summingInt映射就可以了

int[] array = Arrays.stream(values)
.map(i -> Arrays.stream(i)
.boxed()
.collect(Collectors.summingInt(j -> j)))
.mapToInt(i -> i)
.toArray();

将此数组打印到ex。控制台将产生与上面完全相同的结果。

关于java - 打印从函数返回的总和数组不会打印总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55304717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com