我试图修改给定的代码,并添加一个平均到用户给定的2d数组内的所有元素。我初始化数组ave
,使其具有与数组sum
相同的元素,然后将其显示在for
循环之外以进行计算。
import java.util.Scanner;
public class Arrays2D_GeneratorRevised {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
final int R=4, C=3;
int r,c;
double[][] volt = new double[R][C];
double[] sum = new double[R];
double[] ave = new double[R];
System.out.println("Enter the output voltages for the following generators :");
for(r=0; r<R; r++) {
System.out.print("Generator "+(r+1)+" :n");
for(c=0; c<C; c++) {
volt[r][c]=in.nextInt();
sum[r]+=volt[r][c];
ave[r]+=sum[r];
}
}
//display table
System.out.print("nt Generator Test Results");
System.out.printf("nt%16s%10s%9s%10s","Output 1","Output 2","Output 3","Average");
for(r=0; r<R; r++) {
System.out.print("nGenerator "+(r+1));
for(c=0; c<C; c++) {
System.out.printf("%10.2f",volt[r][c]);
}
System.out.printf("%10.2f",sum[r]/C);
}
System.out.printf("%10.2f",ave[r]/=(R*C));
System.out.print("nn");
}
}
我尝试使ave
到一个2d数组,并分配不同的变量R,C, C, R。每当我创建一个1d数组并使用参数array[i]
显示它时,也会发生这种情况。不知何故,它只在我使用Arrays.toString()
来显示或操作里面的元素时起作用。
错误在这一行:
for(r=0; r<R; r++)
{
[...]
}
System.out.printf("%10.2f",ave[r]/=(R*C));
// ^ HERE
在for
循环之后,r == R
,这是数组结束后的一个。
查看代码,printf
应该在循环内,而不是在循环外吗?
如果ave
应该是所有四个生成器的平均值,那么您的计算是错误的。ave
应该是一个标量,而不是一个数组。
import java.util.Scanner;
public class Arrays2D_GeneratorRevised {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
final int R=4, C=3;
int r,c;
double[][] volt = new double[R][C];
double[] sum = new double[R];
double ave = 0.0;
System.out.println("Enter the output voltages for the following generators :");
for(r=0; r<R; r++) {
System.out.print("Generator "+(r+1)+" :n");
for(c=0; c<C; c++) {
volt[r][c]=in.nextInt();
sum[r]+=volt[r][c];
ave+=sum[r];
}
}
//display table
System.out.print("nt Generator Test Results");
System.out.printf("nt%16s%10s%9s%10s","Output 1","Output 2","Output 3","Average");
for(r=0; r<R; r++) {
System.out.print("nGenerator "+(r+1));
for(c=0; c<C; c++) {
System.out.printf("%10.2f",volt[r][c]);
}
System.out.printf("%10.2f",sum[r]/C);
}
System.out.printf("%n%10.2f",ave/=(R*C));
System.out.print("nn");
}
}
下面是一个示例:
Enter the output voltages for the following generators :
Generator 1 :
1 4 9
Generator 2 :
16 25 36
Generator 3 :
49 64 81
Generator 4 :
100 121 144
Generator Test Results
Output 1 Output 2 Output 3 Average
Generator 1 1.00 4.00 9.00 4.67
Generator 2 16.00 25.00 36.00 25.67
Generator 3 49.00 64.00 81.00 64.67
Generator 4 100.00 121.00 144.00 121.67
99.67