Exception:无法静态引用非静态字段播放器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Exception:无法静态引用非静态字段播放器相关的知识,希望对你有一定的参考价值。
我正在用Java编写程序来注册播放器并将它们添加到arraylist中。我添加玩家的方法是:
void registerNewPlayer()
System.out.print("Name?> ");
String name = input.nextLine();
System.out.print("Game?> ");
String game = input.nextLine();
System.out.print("Age?> ");
int age = input.nextInt();
Player player = new Player(name, game, age);
players.add(player);
我的问题是我不知道该放在哪里
ArrayList<Player> players = new ArrayList<>();
如果我主要拥有该方法,则该方法不知道玩家是什么,但是如果我在课堂上拥有它,当我尝试从主打印。解决此问题的最佳方法是什么。
更新:感谢您的帮助,我意识到,由于我的命令循环已经在类的实例版本上运行,因此实际上没有问题,当我尝试在实例命令循环之外测试我的方法时,只有一个问题。
答案
public class YourClass
ArrayList<Player> players = new ArrayList<>();
public static void main(String[] args)
new YourClass(); // or YourClass yourClass = new YourClass();
// Create an instance of YourClass to leave the static context
public YourClass()
registerNewPlayer();
public void registerNewPlayer()
System.out.print("Name?> ");
String name = input.nextLine();
System.out.print("Game?> ");
String game = input.nextLine();
System.out.print("Age?> ");
int age = input.nextInt();
System.out.print("Weight?> ");
int weight = input.nextInt();
Player player = new Player(name, game, age, weight);
players.add(player);
另一答案
您的玩家职业:
public class Player private static ArrayList<Player> _players = new ArrayList<Player>(); private String name; private String game; private int age; private int weight; public Player(String name, String game, int age, int weight) this.name = name; this.game = game; this.age = age; this.weight = weight; public static void AddPlayer(Player player) _players.add(player); public static ArrayList<Player> getPlayers() return _players;
现在您可以创建一些播放器,并按照以下步骤获取它们:
... main ... . . . Player p1 = new Player("Name1", "Game1", 20, 70); Player p2 = new Player("Name2", "Game2", 30, 80); Player p3 = new Player("Name2", "Game3", 25, 73); Player.AddPlayer(p1); Player.AddPlayer(p2); Player.AddPlayer(p3); ArrayList<Player> allPlayers = Player.getPlayers(); . . .
让我知道它是否对您有用!
另一答案
ArrayList<Player> players = new ArrayList<>();
以上是关于Exception:无法静态引用非静态字段播放器的主要内容,如果未能解决你的问题,请参考以下文章