总结Java中的每一行和每一行

时间:2014-02-08 04:20:18

标签: java arrays row multiple-columns

/*
 * 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

我不明白为什么它没有正确地加上数字。我想添加每一行和每列。我甚至不确定这些数字来自何处。

7 个答案:

答案 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] + " ");
        }
    } 
}

<强>样本 enter image description here

答案 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来给出新值。