【问题标题】:Array average calculation数组平均计算
【发布时间】:2014-12-08 17:44:52
【问题描述】:

找不到为什么我的类中的数组不起作用。不确定静态是否与问题有关。我收到很多错误,但我认为主要错误是“无法对非静态字段 rej 进行静态引用”

主要:

public class Arajmain {
public static void main (String[]args){

    System.out.println(Araj.genomsnittet());


}
}

public class Araj {

double [] rej = new double[3];
public static double genomsnitt;

rej[0] = 4;
rej[1] = 7;
rej[2] = 9;

public static double genomsnittet(){
    genomsnitt = (rej[0] + rej[1] + rej[2])/3;
    return genomsnitt;
}   
}

【问题讨论】:

  • (不是“ain't”)工作,因为它不会编译。您有不在构造函数、方法或初始化程序块中的语句。您需要将向rej 添加值的行放在静态初始化程序块中(因为您已将其设为static),或者将它们作为声明行的初始化程序的一部分。
  • 只是一个建议,考虑将/3 更改为/rej.length 以提高可维护性。

标签: java arrays


【解决方案1】:
public class Araj {
  private static double [] rej = new double[3];
  static {
    rej[0] = 4;
    rej[1] = 7;
    rej[2] = 9;
  }
  public static double genomsnittet(){
    double genomsnitt = (rej[0] + rej[1] + rej[2])/3;
    return genomsnitt;
  }   
}

不过,那是一段丑陋的代码。您绝对应该看看有关 Java 和 OOP 的教程。

【讨论】:

    【解决方案2】:

    static 修饰符添加到reg

    static double [] rej = new double[3];
    

    另外,您可以使用静态初始化块对其进行初始化:

    static {
       rej[0] = 4;
       rej[1] = 7;
       rej[2] = 9;
    }
    

    或者使用更简洁的数组字面量:

    static double [] rej = new double[]{4, 7, 9};
    

    【讨论】:

      【解决方案3】:

      这是非常糟糕的代码,无论如何,要使其正常工作,您应该将“rej”声明为静态。

      编辑:正如已经建议的那样,您还应该正确初始化它:

      static {
         rej[0] = 4;
         rej[1] = 7;
         rej[2] = 9;
      }
      

      【讨论】:

      • 这不能解决问题。 rej 元素的初始化行不在有效位置。
      • 是的,这是真的。对不起
      猜你喜欢
      • 2016-06-06
      • 2014-05-14
      • 2013-10-25
      • 1970-01-01
      • 2016-01-10
      • 2019-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多