在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