[英]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.