实例化并返回一个对象

时间:2018-09-24 05:53:13

标签: java oop object instantiation

我正在尝试实例化并以对象的形式返回结果,但是我不确定该怎么做。任何帮助,将不胜感激!谢谢。

当前代码

private static Results stats(int[] data) {
    int      sum = 0,
            range,
            count = 0,
            max = data[0],
            min = data[0],
            mode,
            middle = data.length / 2,
            cardinality = data.length;
    double   mean = 0,
            median;
    Stats Results = new Stats();

    for (int i = 0; i < data.length; i++) {
        sum += data[i];
        if (data[i] < min){
            min = data[i];
        }
        if (data[i] > max){
            max = data[i];
        }
        if (data[i] > count){
            count = data[i];
            mode = i;
        }
    }
    if (data.length % 2 == 1){
        median = data.length / 2;
    } else {
        median = data[middle - 1] + data[middle] / 2;
    }
    mean = sum / data.length;
    range = max - min;    
}

编辑这是公共类Stats中的类

static class Results {
  public int[] data; 
  public int cardinality;
  public int range;
  public double mean;
  public double median;
  public int mode;
  public boolean nomode;

}

这是所有代码(粘贴时格式有些混乱)

public class Stats {

  public static void main(String[] argv) {
     int[][] data = { 
     { 0, 2, 4, 5, 5, 8 },
     { 1, 5, 6, 6, 6, 7, 9 },
     { -4, -2, -2, 3, 12, 12, 42 },
     { 0 },
     { 1, 2 },
     { 1, 1 },
     { 1, 2, 3 },
     { 5, 5, 5, 5, 5 },
     { -2, -2, 0, 1, 1, 2, 2, 2 },
     { -7, 0, 0, 3, 3, 3, 4, 4 },
    };
  for (int i = 0; i < data.length; i++) {
     Results results = stats(data[i]);
     printResults(results);
  }
}

 private static void printArray(int[] x, boolean nl) {
  System.out.print("[");
  for (int i = 0, j = x.length - 1; i < j; i++)
     System.out.print(x[i] + ",");
  System.out.print(x[x.length - 1] + "]");
  if (nl) System.out.println();
}

private static void printResults(Results r) {
  printArray(r.data, true);
  StringBuffer sb = new StringBuffer("...mean: ");
  sb.append(r.mean).append("; median: "). append(r.median).
     append("; mode: "). append(r.nomode ? "modeless" : r.mode).
     append("; cardinality: ").append(r.cardinality).
     append("; range: ").append(r.range);
  System.out.println(sb);
  System.out.println();
}

static class Results {
  public int[] data; 
  public int cardinality;
  public int range;
  public double mean;
  public double median;
  public int mode;
  public boolean nomode;
}

private static Results stats(int[] data) {
   int      sum = 0,
            range,
            count = 0,
            max = data[0],
            min = data[0],
            mode,
            middle = data.length / 2,
            cardinality = data.length;
   double   mean = 0,
            median;
   Stats Results = new Stats();

   for (int i = 0; i < data.length; i++) {
       sum += data[i];
       if (data[i] < min){
           min = data[i];
       }
       if (data[i] > max){
           max = data[i];
       }
       if (data[i] > count){
           count = data[i];
           mode = i;
       }
   }
   if (data.length % 2 == 1){
       median = data.length / 2;
   } else {
       median = data[middle - 1] + data[middle] / 2;
   }
   mean = sum / data.length;
   range = max - min;



 }

}

1 个答案:

答案 0 :(得分:0)

方法声明应如下所示:

private static Results stats(int[] data){
    ....
    .....
    return Results;
}

返回类型应该是类名而不是对象名,这是统计信息 并在方法结束之前添加上述return语句。

相关问题