创建全局变量-Java

创建全局变量-Java,java,global-variables,Java,Global Variables,我收到此代码的编译错误: public class Matching { public static int match = (int) Math.floor(Math.random()*cities.size()); //Error is here } 我想让“匹配”成为一个全局变量 我的编译错误是: “内部类testingProgram中的静态声明非法。仅在常量变量声明中允许匹配修饰符'static' 在初始化期间使用静态非最终变量。“ 我不知道错误的含义,也不知道

我收到此代码的编译错误:

public class Matching {        
    public static int match = (int) Math.floor(Math.random()*cities.size()); //Error is here
}
我想让“匹配”成为一个全局变量

我的编译错误是:

“内部类testingProgram中的静态声明非法。仅在常量变量声明中允许匹配修饰符'static'

在初始化期间使用静态非最终变量。“


我不知道错误的含义,也不知道如何修复它。

发生这种情况是因为您的
匹配
类位于另一个名为
测试程序的类中,并且不是
静态的

只有当内部类本身是静态的时,Java才允许内部类中的
static
字段。您可以通过以下几种方式解决此问题:

  • 通过使
    匹配
    a
    静态
    内部类
  • 通过使
    匹配
    成为顶级类,或
  • 通过使
    static int match
    final,即
    final static int match

    • 在某个静态类(例如main)中创建变量,并确保将其传递给该类的构造函数。我不知道你为什么要这么做,但之所以这么难是因为这不是一个好主意。如果需要保存“匹配”状态,请提供更多信息

      public static void main() {
          int match;
          Matching m = new Matching(match);
      }
      

      如果不打算更改变量,请在
      static
      之前或之后添加
      final
      关键字。什么是变量?您的代码不清楚,无法对其进行测试。cities是ArrayList如何知道它是内部类?