簡體   English   中英

java 中的二維陣列

[英]Array 2-D in java

我想編寫一個 java 程序,它打印二維數組每一行的平均值,但它只適用於第一行。 我不知道是什么問題。

這是代碼:

    int [][] A = new int[r][c];

    for (int i=0;i<A.length;i++)
    {
        System.out.println("Enter the elements of the row number: "+(i+1));
        for (int j=0; j<A[i].length;j++)
            A[i][j]=kbd.nextInt();
    }

    int sum = 0, avg =0;
    for (int i=0; i<A.length;i++)
    {
        for (int j=0; j<A[i].length;j++) {
            sum += A[i][j];
            avg = sum/A[i].length;
        }
        
        System.out.println("The average of the row number: "+(i+1)+" is: "+avg);
    }

}

每次循環時都需要將 sum 重置為零。 這可以通過在 for 循環內部而不是外部聲明 sum 變量來解決。 avg 和 sum 也應該是 double 而不是 int:

for (int i=0; i<A.length;i++)
{
    double sum = 0;
    double avg =0;
    for (int j=0; j<A[i].length;j++) {
        sum += A[i][j];
        avg = sum/A[i].length;
    }
    
    System.out.println("The average of the row number: "+(i+1)+" is: "+avg);
}

我認為問題可能出在總和值上,在計算下一行的總和之前不要刪除值。 此外,我認為可以在打印前循環后計算平均值。

int sum = 0, avg =0;
    for (int i=0; i<A.length;i++)
    {
        sum = 0;

        for (int j=0; j<A[i].length;j++) {
            sum += A[i][j];
        }

        avg = sum/A[i].length;
        
        System.out.println("The average of the row number: "+(i+1)+" is: "+avg);
    }
for (int i=0; i<A.length;i++)
{
    double sum = 0;
    double avg =0;
    for (int j=0; j<A[i].length;j++) {
        sum += A[i][j];
        avg = sum/A[i].length;
    }
    
    System.out.println("The average of the row number: "+(i+1)+" is: "+avg);
}

當然,您也可以使用 lambda 並首先避免此類問題

for(int row = 0; row < A.length; row++) {
  double avg = Arrays.stream(A[row]).boxed().collect(averagingInt(i -> i));
  System.out.println("The average of the row number: " + (row + 1) + " is: " + avg);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM