我想按列求和二维数组的总和和平均值,如果e[i][j]
的值超过0,则对它进行计数和求和。但我不知道输出是NaN
, 我该如何解决这个问题?NaN的诊断原因
public class d_2DArray {
public static void main(String [] args){
double[][] e= {{0.0,0.0,0.0,0.0},
{0.0,0.6,0.0,0.0},
{0.0,0.2,0.5,0.1},
{0.0,0.2,0.5,0.4},
{0.0,0.2,0.5,0.7},
{0.0,0.0,0.0,0.9}};
double[] avg= new double[4];
double[] sum= new double[4];
int i,j,k=0;
int[][] x=new int [6][4] ;
//average of column
for(j=1;j<e[1].length;j++){
sum[j]=0.0;
for(i= 1; i < e.length; i++)
if(x[i][j]==1){
sum[j] +=e[i][j];
k++;
}
avg[j]= sum[j]/k ;
System.out.println("Average j="+avg[j]);
}
}
}
我开始1,因为我想看到输出从1到最后,我如何设置X到x [i] [j] – user906147
如果你想跳过最上面一行和左边的列,那么从1开始就是你想要的。我不确定你使用的X是什么,所以我不知道该怎么告诉你设置它。你是指'e [i] [j]> 0'而不是'x [i] [j] == 1',如果你想要的是“这个域不等于零”? – Danalog
在这里,我的意思是如果x [i] [j] == 1这意味着e [i] [j]的值不是= 0.0,但现在我改为x“if(e [i] [j]!= 0.0){ sum [j] + = e [i] [j]; k ++;“但输出不正确,只有第一个j是真的 – user906147