2013-04-22 29 views
0

我没有看到我在这里做错了什么,或者这里的任何东西是静态的,没有以这种方式声明。我只需要在这里指出正确的方向。获取错误:非静态方法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()方法。

编辑:这是我编辑的代码应用所提供的修复程序。谢谢!

+0

您的代码中存在语义问题。为什么在构造函数中设置count = 0?我建议你使用'count ++;'然后'id = count;''players = count;'并且不要使用''count = count ++;'' count = 0;' – 2013-04-22 17:42:43

回答

3

getTotalPlayers()不是一个静态方法,所以你需要一个PaintballPlayer的实例来调用这个方法。

如果你想总的玩家店内PaintballPlayer,你需要一个静态的属性(所有实例相同的参考):

class PaintballPlayer { 

    private static int totalPlayers; 

    public PaintballPlayer() { 
    totalPlayers++; 
    } 

    public static int getTotalPlayers() { 
    return totalPlayers; 
    } 
} 
+0

好的太棒了!这工作。然而我得到的是有0名球员,总共应该有3名。现在,当运动员的身高是2时,现在是4。 – 2013-04-22 17:40:38

+0

请查看您的帖子的评论。 – 2013-04-22 17:44:06

+0

您将'totalPlayers'属性更改为'static'? – 2013-04-22 17:44:06

0

在你的代码有几个问题,在构造#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; 
} 
+0

修改这个总共有4个玩家,玩家ID现在是2.所以playerID = good,totalPlayers现在只需要3。 – 2013-04-22 18:04:26

+0

你可以编辑帖子并粘贴你的新代码? – 2013-04-22 18:06:32

+0

我已经编辑过这篇文章。它似乎还没有审查。 – 2013-04-22 18:07:37

0

试试这个。

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()); 
    } 
} 
+0

对不起,发布这个新的答案。但是因为提问者很困惑,所以我发布了这个。 – 2013-04-22 18:15:51

+0

谢谢。你们所有人都帮了我很多忙。我很感激。 – 2013-04-22 18:18:50

相关问题