0

ここで何が間違っているのか、またはここで宣言されていないものがどのように静的であるかはわかりません。ここで正しい方向に向けられる必要があります。

テストコード:

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() メソッドにあります。

編集:これは、提供された修正を適用して編集したコードです。ありがとうございました!

4

3 に答える 3

3

getTotalPlayers()PaintballPlayerは静的メソッドではないため、このメソッドを呼び出すには のインスタンスが必要です。

プレイヤーの合計を に格納するPaintballPlayer場合は、静的属性が必要です (すべてのインスタンスで同じ参照)。

class PaintballPlayer {

  private static int totalPlayers;

  public PaintballPlayer() {
    totalPlayers++;
  }

  public static int getTotalPlayers() {
    return totalPlayers;
  }
}
于 2013-04-22T17:31:15.340 に答える
0

あなたのコードには、コンストラクター#1にいくつかの問題があります

public PaintballPlayer(String first, String middle, String last)
{
    count = 0;
    players = 0;
    id = count++;
    players = count++;
    firstName = first;
    middleName = middle;
    lastName = last;
}

変数 player と count はリセットされ、変数 count は 2 倍に増加します。

そして、コンストラクター #2 では、問題は最悪です。

public PaintballPlayer(String f, String l)
{
    this (f,"",l);
    id = count++;
    players = count++;
}

元のコンストラクターの 2 回以外に count の値を 2 回増やしているため、合計で 4 回です。

Devon Freese が言ったことを実行したら、PaintballPlayer のコンストラクターを変更する必要があります。

public PaintballPlayer(String first, String middle, String last)
{
    id = totalPlayers++;
    firstName = first;
    middleName = middle;
    lastName = last;
}
于 2013-04-22T17:54:15.830 に答える