/*
* Programmer: Olawale Onafowokan
* Date: February 6, 2014
* Purpose: Prints the row and column averages
*/
class Lab4 {
public static void main(String[] args) {
int [][] scores = {{ 20, 18, 23, 20, 16 },
{ 30, 20, 18, 21, 20 },
{ 16, 19, 16, 53, 24 },
{ 25, 24, 22, 24, 25 }};
outputArray(scores);
}
public static void outputArray(int[][] array) {
int sum= 0;
int rowSize = array.length;
int columnSize = array[0].length;
System.out.println("rows=" + rowSize + "cols=" + columnSize);
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[0].length; j++) {
sum += array[i][j];
}
System.out.println("Print the sum of rows = " + sum);
}
for (int i = 0; i < array.length; i++) {
sum = 0;
sum = sum + array[i][j];
// It is telling me the j can't be resolved
}
}
}
程序打印出来:
rows=4cols=5
Print the sum of rows = 612
Print the sum of rows = 20358
Print the sum of rows = 652058
Print the sum of rows = 20866609
我不明白为什么它没有正确地加上数字。我想添加每一行和每列。我甚至不确定这些数字来自何处。
答案 0 :(得分:4)
这是你的问题:
sum += sum + array[i][j];
sum += sum + array[i][j]
与sum = sum + sum + array[i][j]
相同(您添加了两次)
应该是:
sum = sum + array[i][j];
或 sum += array[i][j];
如果您只想打印每个行的总和,请在sum
外的每次迭代中将0
重置为for-loop
for (int i = 0; i < array.length; i++){
sum=0;
....
如果您只想打印每个列的总和,则需要添加以下内容:
int[] colSum =new int[array[0].length];
然后在for-loop
内添加
colSum[j]+=array[i][j];
所以最后你会有这个:
int[] colSum =new int[array[0].length];
for (int i = 0; i < array.length; i++){
for (int j = 0; j < array[i].length; j++){
sum += array[i][j];
colSum[j] += array[i][j];
}
System.out.println("Print the sum of rows =" + sum);
}
for(int k=0;k<colSum.length;k++){
System.out.println("Print the sum of columns =" + colSum[k]);
}
答案 1 :(得分:1)
public class Main {
public static void main(String[] args) {
ArrSort objArr = new ArrSort();
int[][] arr = {
{1,2,3},
{4,5,6},
{1,2,3}
};
objArr.getColsSum(arr);
}
}
class ArrSort {
public void getColsSum(int[][] arg){
int[] colsSum = new int[3];
colsSum[0] = 0;
colsSum[1] = 0;
colsSum[2] = 0;
for(int i = 0; i<arg.length; i++) {
for(int j = 0; j<arg[i].length; j++) {
System.out.print(arg[i][j] +" ");
if(j==0) {
colsSum[j]+=arg[i][j];
} else if(j==1) {
colsSum[j]+= arg[i][j];
} else {
colsSum[j]+= arg[i][j];
}
}
System.out.println();
}
for(int i = 0; i<colsSum.length; i++){
System.out.print(colsSum[i] + " ");
}
}
}
答案 2 :(得分:0)
for (int i = 0; i < array.length; i++)
{
sum=0;
for (int j = 0; j < array[0].length; j++)
{
sum += array[i][j];
}
System.out.println("Print the sum of rows =" + sum);
}
尝试初始化sum = 0;
对于列总和,您可以执行此操作
class Sample{
public static void main(String []args){
int arr[][]={{1,2,3},{1,2,3},{1,2,3}};
int sum=0;
for(int col=0;col<arr[0].length;col++){
for(int row=0;row<arr.length;row++){
sum+=arr[row][col];
}
System.out.println("Sum is "+sum);
sum=0;
}
}
}
答案 3 :(得分:0)
你的外循环(用i控制)每行执行一次。如果要对一行中的所有数字求和,请在每个循环开始时将sum
设置为零。
如果您有“sum = sum + x”,则会将x添加到sum并存储在sum中。如果你写“sum + = x”,那将会做同样的事情。但是你写了“sum + = sum + x”,它将和和x加在一起。
答案 4 :(得分:0)
您不必使用运算符“+ =”,只需使用“=”。
答案 5 :(得分:0)
你的这个for循环超出范围btw。 检查编译器:
输出:取出sum = sum + array [i] [j]
行= 4cols = 5
打印行总数= 97
打印行总数= 206
打印行数= 334
打印行数= 454
之后它会起作用,但它会给所有行的总和不会破坏它们。
for (int i = 0; i < array.length; i++) {
sum = 0;
sum = sum + array[i][j];
// It is telling me the j can't be resolved
}
//j is out of scope there is no such thing as j in this loop
英语:伪代码
添加一组行然后停止。
R1
R2
R3
R4
或者数组,如果你想要r [x]
每次清理总和而不是相互添加。
所以你需要4行总和
和5列的总和
C1
C2
C3
C4
C5
所以你做一个水平求和的循环 和一个垂直总和。
也不要将你的名字放在作业之上。
修复后的输出
行= 4cols = 5
打印行总数= 97
打印行总数= 109
打印行数= 128
打印行数= 120
建立成功(总时间:0秒)
现在您需要为列5次
执行此操作答案 6 :(得分:0)
“您不必使用运算符”+ =“,只需使用”=“。”
... 实际上他需要+ =然后他却错了。
从逻辑上讲,他的代码是错误的。它应该是+ =然后在外部for循环的每个实例之后,他应该将其切断 通过再次将值的总和重置为0来给出新值。