我正在制作垄断游戏,星球大战版本是为了好玩,不是为了做作业:)无论如何我提示用户输入他们想要的4个玩家中有多少'人'玩家。然后我使用for循环来创建那么多的人类玩家。这似乎有效但是当我使用一个getter方法测试并看看玩家是否在循环之外存活时,它说“找不到符号 - 可变玩家”。这是我第一次尝试使用数组。因此,如果有人可以帮助我访问和使用那些创建的独特播放器对象,那就太棒了。
import java.util.Scanner;
import java.util.Random;
public class Launcher
{
PairOfDice myDice = new PairOfDice();
private Planet myTest;
private PlanetInfo myPlanetInfo;
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("You are in the presence of the Naked Jeff's code. Please, be humbled.");
System.out.println();
System.out.println("There will be 4 players, how many do you wish to be human? 0><4");
////////////////////////////////////////////////////////// HOW TO CREATE MULTIPLE OBJECTS BASED ON LOOP
int numbHuman = scan.nextInt();
while (numbHuman < 1 || numbHuman > 4)
{
System.out.println("Invalid entry, try again.");
numbHuman = scan.nextInt();
}
Player[] arr = new Player[numbHuman];
String[] userName = new String[numbHuman];
for(int i = 0; i < arr.length; i++)
{
System.out.println("Player " + (i + 1) + ", Please enter your first name:");
userName[i] = scan.next();
arr[i] = new Player(userName[i]);
}
System.out.println("player " + (4) + "'s name is" + [COLOR="#FF0000"]player[/COLOR][3].getName());
/////////////////////////////////////////////////////////
}
}
//and here's my Player class.
public class Player
{
PairOfDice myDice = new PairOfDice();
private int startingBal;
private int currentBal;
private String myName;
private int rollOne;
private int rollTwo;
private int doublesCount;
private boolean roll;
public Player(String userName)
{
myName = userName;
System.out.println("Player's name is: " + myName);
}
public String getName(){return myName;}
public int playerGo()
{
myDice.rollDice();
rollOne = myDice.getResult1();
rollTwo = myDice.getResult2();
while(rollOne == rollTwo && roll == true)
{
doublesCount++;
roll = false;
//WORKING ON THIS//
}
return 0;
}
public boolean getGoAgain(boolean roll)
{
return roll;
}
public int newBalance()
{
return 1;
}
}
答案 0 :(得分:3)
而不是致电player[3].getName()
,您需要致电arr[3].getName()
。
“你必须仔细阅读你的代码。使用 arr 或不使用。没有播放器”。 ;)
修改强>:
顺便说一下,如果玩家少于4人,即使arr[3].getName()
也可能导致错误。请改用arr[numbHuman-1].getName()
,并注意这不一定是第四位玩家。
所以你的行可能是这样的:
System.out.println("player " + numbHuman + "'s name is " + arr[numbHuman-1].getName());
答案 1 :(得分:0)
替换
System.out.println("player " + (4) + "'s name is" + [COLOR="#FF0000"]player[/COLOR][3].getName());
带
System.out.println("player " +"'s name is" +arr[3].getName());
您已声明类型为Player的数组,该数组的名称为arr。因此,在访问数组时,您需要给出带索引的数组名称,因此如果您访问第三个播放器并且索引以1开头,则代码将为:
arr[3].getName();