gpt4 book ai didi

java - 无法对非静态字段玩家进行静态引用

转载 作者:行者123 更新时间:2023-12-01 06:00:53 28 4
gpt4 key购买 nike

我正在用java编写一个程序来注册玩家并将它们添加到数组列表中。我添加玩家的方法是这样的:

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<>();

如果我在 main 中有它,该方法不知道玩家是什么,但如果我在类中有它,当我尝试时,我会得到“无法对非静态字段玩家进行静态引用”异常从 main 打印它。解决这个问题的最佳方法是什么。

更新:感谢您的帮助,我意识到由于我的命令循环已经在我的类的实例化版本上运行,因此实际上没有问题,只有当我尝试在实例化命令循环之外测试我的方法时才出现问题。

最佳答案

如果您想在类级别拥有它,请转义静态上下文。

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

关于java - 无法对非静态字段玩家进行静态引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59733667/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com