【发布时间】:2018-05-09 16:02:34
【问题描述】:
目前我只是在java中做一些练习:
主要:
import java.util.ArrayList;
import java.util.Random;
import javax.swing.JOptionPane;
import settelersofcatan.playerinformation;
public class settlersofcatanhelper
{
private ArrayList<playerinformation> PlayerArray = new ArrayList<playerinformation>();
public static void main(String[] args)
{
String NumberOfPlayersString = JOptionPane.showInputDialog("How many player");
int NumberOfPlayers = Integer.parseInt(NumberOfPlayersString);
for (int Counter = 0; Counter < NumberOfPlayers; Counter++)
{
String Name = JOptionPane.showInputDialog("Name of player " + Counter);
String Colour = JOptionPane.showInputDialog("which colour are you playing with");
playerinformation PlayerDetails = new playerinformation(Name, Colour, Counter);
addplayer(PlayerDetails);
}
}
public void addplayer(playerinformation player)
{
this.PlayerArray.add(player);
}
}
助手类:
package settelersofcatan;
public class playerinformation {
String PlayerName;
String Colour;
int Position;
public playerinformation(String name, String colour, int position)
{
setPlayerName(name);
setColour(colour);
setPosition(position);
}
public String getPlayerName() {
return PlayerName;
}
public void setPlayerName(String playerName) {
PlayerName = playerName;
}
public String getColour() {
return Colour;
}
public void setColour(String colour) {
Colour = colour;
}
public int getPosition() {
return Position;
}
public void setPosition(int position) {
Position = position;
}
}
我现在遇到的问题是我正在尝试添加玩家的信息并得到响应“无法从类型setttersofcatanhelper 对非静态方法addplayer(playerinformation) 进行静态引用”。 我查看了我有这个工作的代码,但看不出有什么不同或为什么它不起作用的原因。谁能帮帮我?
【问题讨论】:
-
public void addplayer(playerinformation player)是非静态的,但您从main(即static)调用它。阅读 Java 中static的副本和/或信息。 -
@notyou 会读一读,看看它是否对我有帮助
-
@notyou,我明白了,但是我怎样才能让它工作,我必须为它制作单独的方法吗?
-
您必须首先了解静态的含义。它基本上意味着它是独立的,并且在任何时候都不依赖于类的状态。通过让静态方法引用类中的属性并对其进行干扰,本质上使其依赖于类的状态,因此不是有效的静态方法,因此会失败。
-
一目了然,您可以将
addplayer设为静态,但您也需要将PlayerArray设为静态,这可能不是您想要的。哦,this可能也会在addplayer中给出同样的错误,所以你可以使用settlersofcatanhelper.PlayerArray.add(player);。但我仍然会阅读static并弄清楚。另外,请查阅 Java 命名约定(类以大写字母开头,变量为驼峰式等)。
标签: java class object compiler-errors