在Java中创建数组数组

在Java中创建数组数组,java,arrays,object,multidimensional-array,poker,Java,Arrays,Object,Multidimensional Array,Poker,假设我有一个玩家类,例如: 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

假设我有一个玩家类,例如:

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();

}
publicstaticvoidmain(字符串[]args){
国际玩家计数;
int启动芯片;
打印(“有多少玩家?”);
playerCount=myScanner.nextInt();
Player[]aPlayer=新玩家[playerCount+1];
对于(int i=0;i
如果是这样,我将如何为每个玩家分配姓名、筹码数量和间隔?我以后如何在代码中访问和修改它们


编辑:将玩家作为对象或数组(名称、筹码、betVal)留作以后访问会更容易吗?

您可以通过告诉数组您要访问哪个玩家来访问每个玩家

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

例如可以使用。

您可以通过告诉阵列您要访问哪个玩家来访问每个玩家

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

例如,可以工作。

为什么不在创建任何内容之前询问用户的所有输入?例如:

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);
    }
}
publicstaticvoidmain(字符串[]args){
国际玩家计数;
int启动芯片;
打印(“有多少玩家?”);
playerCount=myScanner.nextInt();
打印(“输入起始芯片数量:”);
startingChip=myScanner.nextInt();
Player[]aPlayer=新玩家[玩家计数];
对于(int i=0;i
您还应该使用列表。最后,如果您想询问每个玩家的姓名,请直接在循环中进行:

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());
}
for(int i=0;i
为什么不在创建任何内容之前询问用户的所有输入?例如:

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);
    }
}
publicstaticvoidmain(字符串[]args){
国际玩家计数;
int启动芯片;
打印(“有多少玩家?”);
playerCount=myScanner.nextInt();
打印(“输入起始芯片数量:”);
startingChip=myScanner.nextInt();
Player[]aPlayer=新玩家[玩家计数];
对于(int i=0;i
您还应该使用列表。最后,如果您想询问每个玩家的姓名,请直接在循环中进行:

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());
}
for(int i=0;i
首先,您的变量需要是私有的(有一部分程序员更喜欢公共变量,但最喜欢私有的)

您可以通过重载构造函数或setter设置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);
或者使用setter,如中所示

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


 aPlayer[i].setName("Jason");
 aPlayer[i].setChips(5);
 aPlayer[i].setBetVal(1000);
for(int i=0;i

考虑到您的示例程序,我想选项2很好。

首先,您的变量需要是私有的(有一部分程序员更喜欢公共变量,但大多数更喜欢私有的)

您可以通过重载构造函数或setter设置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);
或者使用setter,如中所示

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


 aPlayer[i].setName("Jason");
 aPlayer[i].setChips(5);
 aPlayer[i].setBetVal(1000);
for(int i=0;i
考虑到您的示例程序,我想选项2的效果很好。

试试这样的方法。。。 在循环本身中询问单个玩家的信息

    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;
    }
System.out.println(“有多少玩家?”);
Scanner myScanner=新扫描仪(System.in);;
playerCount=myScanner.nextInt();
Player[]aPlayer=新玩家[玩家计数];
对于(int i=0;i
另外,将Player类的实例变量设为私有,并使用getter和setter访问它们。

试试这样的方法。。。 在循环本身中询问单个玩家的信息

    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;
    }
System.out.println(“有多少玩家?”);
Scanner myScanner=新扫描仪(System.in);;
playerCount=myScanner.nextInt();
Player[]aPlayer=新玩家[玩家计数];
对于(int i=0;i

另外,将Player类的实例变量设为私有,并使用getter和setter访问它们。

您创建的Player太多了。是的。尽管您可以为(inti=0;i这与数组数组有什么关系?您只有一个简单的
Player
对象数组,而不是数组数组。Wh