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);
}
}
每次循环都需要将总和重置为零。这可以通过在 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);
}
我想编写一个 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);
}
}
每次循环都需要将总和重置为零。这可以通过在 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);
}