-1

私は配列を持っています:

private String[] gamesArray = new String[] {"spin", "tof"};

そして、プログラムを開始するときに、プログラムに配列内の項目を出力させたい:

Please select a game: spin, tof.

これは私の試みです:

import java.util.Scanner;

public class Main {

private Scanner console = new Scanner(System.in);
private Spin spin = new Spin();
private String input = "";
private String[] gamesArray = new String[] {"spin", "tof"};

public static void main (String[] args) {

    System.out.println("Welcome to the system!");

    for (String s : gamesArray) {

        System.out.println("Please select a game:" + s);

    }

}
}

エラー:

src\Main.java:15: error: non-static variable gamesArray cannot be referenced fro
m a static context
                for (String s : gamesArray) {
                                ^

なにが問題ですか?

4

3 に答える 3

1

最初にクラスのオブジェクトを作成する必要があります

 Main obj = new Main();
 for(String s : obj.gamesArray){
       System.out.println("Please select a game:" + s);

 } 
  • 静的メソッドまたは変数は、静的メソッドから直接アクセスできます。配列を次のように宣言すると、クラスprivate static String[] gamesArray = new String[] {"spin", "tof"};のオブジェクトを作成せずにアクセスできた可能性がありますMain
  • ただし、静的変数はすべてのインスタンスで共有される変数であるため、インスタンス メソッドから静的変数に直接アクセスできます。
  • インスタンス変数に直接アクセスする場合は、静的メソッドではなくインスタンス メソッドでアクセスできます。

    public class StaticNonStatic {
    
    private static int staticVar;
    private int instanceVar;
    
    public void instanceMethod(){
        System.out.println(instanceVar);// instance variable accessed directly
        System.out.println(staticVar); // static variable accessed directly from instance method
    }
    
    public static staticMethod(){
        System.out.println(instnaceVar); // no this is wrong, can't access instance member from static block directly
        System.out.println(instnaceVar); // fair enough, accessing static member from static method directly
    }
    
    }
    
于 2013-06-24T19:24:57.213 に答える