如何使用for循环访问对象在数组中的对象数据?

时间:2013-11-28 16:54:24

标签: java arrays for-loop

我正在制作垄断游戏,星球大战版本是为了好玩,不是为了做作业:)无论如何我提示用户输入他们想要的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;
    }
}

2 个答案:

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