计算数组2维中每行的平均值和标准差

时间:2012-01-12 18:37:45

标签: java arrays

我有二维数组,我也需要计算每行的平均值和标准偏差并将其存储在适当的位置。我已经写了代码,但它仍然给我错误的结果,没有给出预期值的正确答案。任何人都可以帮助我,也许我的代码是错的,但我不知道如何纠正它。这是数组

enter image description here

这是代码本身:

public void analyze(String[][] arr) {
   double res = 0.0;
   double avg = 0;
   double variance = 0;
   double SD;
   double Q = 0;
   int index = 0;

   for (int i = 1; i < (arr.length); i++) {
      for (int j = 1; j < (arr[i].length); j++) {
         res = res + Integer.parseInt(arr[i][j]);
      }

      avg = res / (arr[i].length - 1);

      System.out.print("arr[i].length:  " + arr[i].length + "\t");
      System.out.println("Average is " + avg);
      /*
      double v = Q + (arr.length - avg) * (arr.length - avg);
      variance = Q / (arr.length - 1);
      SD = Math.sqrt(variance);
      System.out.println("average is " + avg);
      System.out.println("SD");

      double nums[] = { 1.0, 2.3, 3.4, 4.5, 40.5 };
      double result = 0.0;
      for (i = 0; i < nums.length; i++) {
         result = result + nums[i];
      }
      System.out.println("Average is =" + result / nums.length);
      */
   }   
}

2 个答案:

答案 0 :(得分:1)

您可以在for上启动两个1循环。数组在Java中为零索引。这会导致您完全错过第一行和后续每一行中的第一列。

更改

    for(int i=1; i<(arr.length);i++){
        for(int j=1;j<(arr[i].length);j++){
        res = res+Integer.parseInt(arr[i][j]);
    }

    for(int i=0; i<(arr.length);i++){
        for(int j=0;j<(arr[i].length);j++){
        res = res+Integer.parseInt(arr[i][j]);
    }

答案 1 :(得分:1)

您错过了Q的计算。并且您需要在外循环的每次迭代之间重置计算变量。