2013-04-22 31 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

相關問題