簡體   English   中英

Java打印數組?

[英]Java printing an array?

我有一個數組:

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) {
                                ^

怎么了?

您正在嘗試打印沒有實例的實例字段。 main()方法是靜態的。

您可以通過將gamesArray聲明為靜態字段來解決此問題。 例如:

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

另外,您可以創建Main()類的實例,並通過該實例訪問字段。

 Main myMain = new Main();
 for (String s : myMain.gamesArray) {

完成其中一項后,您會注意到輸出看起來像這樣:

Please select a game:spin
Please select a game:tof

您可能希望“請選擇游戲”不在循環中。

您需要先創建類的對象

 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 } } 

GamesArray是您的類的實例成員。 由於main方法始終是靜態的,因此沒有類的實例可以通過gamesArray獲得。 考慮將gamesArray設為靜態

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM