获取错误:非静态方法getTotalPlayers()不能从静态上下文中引用
我没有看到我在这里做错了什么,或者这里的任何东西是静态的,没有以这种方式声明。我只需要在这里指出正确的方向。获取错误:非静态方法getTotalPlayers()不能从静态上下文中引用
测试代码:
public class PaintballPlayerTest
{
//Test program for PaintballPlayer assignment
public static void main (String [] args)
{
//Part 1 check constructor & toString --(make sure ID is working too)
PaintballPlayer sheldon = new PaintballPlayer ("Sheldon", "Lee", "Cooper");
PaintballPlayer leonard = new PaintballPlayer ("Leonard", "Hofstadter");
PaintballPlayer amy = new PaintballPlayer ("Amy", "Farrah", "Fowler");
System.out.println(sheldon);
System.out.println(leonard);
//Part 2 test getTotalPlayer --should be 3
System.out.println("The team has this many players " + PaintballPlayer.getTotalPlayers());
我的代码:
import java.util.*;
public class PaintballPlayer
{
private String firstName, middleName, lastName;
private String secFirst, secLast;
private int id;
private int count;
private static int totalPlayers;
private int playerID;
private int players;
public PaintballPlayer(String first, String middle, String last)
{
count = 0;
id = totalPlayers++;
players = count++;
firstName = first;
middleName = middle;
lastName = last;
}
public PaintballPlayer(String f, String l)
{
this (f,"",l);
id = count++;
}
public PaintballPlayer()
{
totalPlayers++;
}
public static int getTotalPlayers()
{
return totalPlayers;
}
public String toString()
{
String name;
String n;
name = firstName + " " + middleName + " " + lastName;
return name;
}
public int getPlayerID()
{
playerID = count;
return playerID;
}
}
同样,我的问题是与getTotalPlayers()方法。
编辑:这是我编辑的代码应用所提供的修复程序。谢谢!
getTotalPlayers()
不是一个静态方法,所以你需要一个PaintballPlayer
的实例来调用这个方法。
如果你想总的玩家店内PaintballPlayer
,你需要一个静态的属性(所有实例相同的参考):
class PaintballPlayer {
private static int totalPlayers;
public PaintballPlayer() {
totalPlayers++;
}
public static int getTotalPlayers() {
return totalPlayers;
}
}
好的太棒了!这工作。然而我得到的是有0名球员,总共应该有3名。现在,当运动员的身高是2时,现在是4。 – 2013-04-22 17:40:38
请查看您的帖子的评论。 – 2013-04-22 17:44:06
您将'totalPlayers'属性更改为'static'? – 2013-04-22 17:44:06
在你的代码有几个问题,在构造#1
public PaintballPlayer(String first, String middle, String last)
{
count = 0;
players = 0;
id = count++;
players = count++;
firstName = first;
middleName = middle;
lastName = last;
}
变量玩家和计数正在重置,而变量计数增加了两倍。
并在构造#2的问题是最糟糕的:
public PaintballPlayer(String f, String l)
{
this (f,"",l);
id = count++;
players = count++;
}
,因为你都在增加数量的,除了在原有的构造函数中的2次的两倍,因此在总值的四倍。
一旦u必须做的事情德文弗里兹说你将不得不修改PaintballPlayer
的构造public PaintballPlayer(String first, String middle, String last)
{
id = totalPlayers++;
firstName = first;
middleName = middle;
lastName = last;
}
修改这个总共有4个玩家,玩家ID现在是2.所以playerID = good,totalPlayers现在只需要3。 – 2013-04-22 18:04:26
你可以编辑帖子并粘贴你的新代码? – 2013-04-22 18:06:32
我已经编辑过这篇文章。它似乎还没有审查。 – 2013-04-22 18:07:37
试试这个。
import java.util.*;
public class PaintballPlayer {
private String firstName, middleName, lastName;
private String secFirst, secLast;
private int id;
private static int count;
private static int totalPlayers;
private int playerID;
private static int players;
public PaintballPlayer(String first, String middle, String last) {
count++;
id = count;
players = count;
firstName = first;
middleName = middle;
lastName = last;
}
public PaintballPlayer(String f, String l) {
this(f, "", l);
id = count;
players = count;
}
public String toString() {
String name = firstName + " " + middleName + " " + lastName;
return name;
}
public static int getTotalPlayers() {
totalPlayers = players;
return totalPlayers;
}
public int getPlayerID() {
playerID = count;
return playerID;
}
}
class PaintballPlayerTest {
//Test program for PaintballPlayer assignment
public static void main(String[] args) {
//Part 1 check constructor & toString --(make sure ID is working too)
PaintballPlayer sheldon = new PaintballPlayer("Sheldon", "Lee", "Cooper");
PaintballPlayer leonard = new PaintballPlayer("Leonard", "Hofstadter");
PaintballPlayer amy = new PaintballPlayer("Amy", "Farrah", "Fowler");
System.out.println(sheldon);
System.out.println(leonard);
//Part 2 test getTotalPlayer --should be 3
System.out.println("The team has this many players " + PaintballPlayer.getTotalPlayers());
}
}
对不起,发布这个新的答案。但是因为提问者很困惑,所以我发布了这个。 – 2013-04-22 18:15:51
谢谢。你们所有人都帮了我很多忙。我很感激。 – 2013-04-22 18:18:50
您的代码中存在语义问题。为什么在构造函数中设置count = 0?我建议你使用'count ++;'然后'id = count;''players = count;'并且不要使用''count = count ++;'' count = 0;' – 2013-04-22 17:42:43