0

次のような Player クラスがあるとします。

public class Player {

String name;
int chips;
int betVal;

}

プレーヤーの配列を作成するための次のコードは正しいですか?

public static void main(String[] args) {
    int playerCount;
    int startingChip;
    out.print("How many players? ");
    playerCount = myScanner.nextInt();
    Player[] aPlayer = new Player[playerCount + 1];

    for (int i = 0; i < playerCount + 1; i++){
        aPlayer[i] = new Player();
    }

    out.print("Enter starting chip amount: ");
    startingChip = myScanner.nextInt();

}

もしそうなら、各プレイヤーに名前、チップ額、賭け金をどのように割り当てますか? 後でコード内でそれらにアクセスして変更するにはどうすればよいですか?

編集:後でアクセスするために、プレーヤーをオブジェクトまたは配列 (name、chips、betVal) として残す方が簡単ですか?

4

4 に答える 4

2

まず、変数は非公開にする必要があります (一部のプログラマーは公開変数を好みますが、ほとんどは非公開を好みます)。

オーバーロードされたコンストラクターまたはセッターを介して、Player オブジェクトの値を設定できます。

public class Player {


    private String name;
    private int chips;
    private int betVal;


    public Player(){
    //default constructor to initialize without any parameters
    }

    public Player(String name, int chips, int betVal){
        this.name=name;
        this.chips=chips;
        this.betVal=betVal;

    }


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getChips() {
        return chips;
    }

    public void setChips(int chips) {
        this.chips = chips;
    }

    public int getBetVal() {
        return betVal;
    }

    public void setBetVal(int betVal) {
        this.betVal = betVal;
    }
}

その場合、初期化は次のいずれかになります

aPlayer[i] = new Player("Jason", 5,1000);

またはセッターを次のように使用する

for (int i = 0; i < playerCount + 1; i++){
        aPlayer[i] = new Player();
 }


 aPlayer[i].setName("Jason");
 aPlayer[i].setChips(5);
 aPlayer[i].setBetVal(1000);

あなたのサンプル プログラムを考えると、オプション 2 がうまくいくと思います。

于 2012-10-30T15:44:05.787 に答える
1

どのプレイヤーにアクセスしたいかを配列に伝えることで、各プレイヤーにアクセスできます。

`aPlayer[0].name = "JAG";`

たとえば、動作します。

于 2012-10-30T15:40:12.403 に答える
1

何かを作成する前に、すべてのユーザーの入力を聞いてみませんか? 例えば ​​:

public static void main(String[] args) {
    int playerCount;
    int startingChip;

    out.print("How many players? ");
    playerCount = myScanner.nextInt();
    out.print("Enter starting chip amount: ");
    startingChip = myScanner.nextInt();

    Player[] aPlayer = new Player[playerCount];

    for (int i = 0; i < playerCount; i++){
        aPlayer[i] = new Player();
        aPlayer[i].setChips(startingChip);
    }
}

リストも使用する必要があります。最後に、各プレイヤーの名前を尋ねたい場合は、ループ内で直接実行します。

for (int i = 0; i < playerCount; i++){
    aPlayer[i] = new Player();
    aPlayer[i].setChips(startingChip);

    out.print("What's the player " + i + " name? ");
    aPlayer[i].setName(myScanner.next());
}
于 2012-10-30T15:40:38.140 に答える
0

このようなことを試してみてください...ループ自体で個々のプレーヤーの情報を求めてください。

    System.out.println("How many players? ");
    Scanner myScanner = new Scanner(System.in);;
    playerCount = myScanner.nextInt();
    Player[] aPlayer = new Player[playerCount];

    for (int i = 0; i < playerCount; i++){
        aPlayer[i] = new Player();

        System.out.println("Enter Name for Player " + i+1);
        String name = myScanner.next();

        System.out.println("Enter chips for Player " + i+1);
        int chips = myScanner.nextInt();

        System.out.println("Enter betVal for Player " + i+1);
        int betVal = myScanner.nextInt();

        aPlayer[i].name = name;
        aPlayer[i].chips = chips;
        aPlayer[i].betVal = betVal;
    }

また、Player クラスのインスタンス変数を非公開にし、getter と setter を使用してそれらにアクセスします。

于 2012-10-31T10:55:11.387 に答える