调用Arraylist方法并在if语句条件下调用它

时间:2015-04-08 11:26:23

标签: java arrays methods arraylist

所以我被要求完成这些任务: 写一个可执行的控制台应用程序GuessingGame玩家试图猜测的地方 在每个游戏开始时,GuessingGame实例化一个玩家 将用于存储给定玩家的游戏分数的对象。玩家的名字是 从用户输入分配。然后程序生成1到20之间的随机数 并要求玩家猜出这个数字。当玩家输入一个号码时,程序会告诉你 玩家数量是太高还是太低。玩家应该继续猜测 数字,直到输入正确的数字。 分数计算如下:

  

得分=(20 - 猜测次数)。

每个玩家被要求玩五次游戏,因此每个玩家存储五个分数。 然后,应用程序应显示播放器的平均分和最佳分数。

虽然我坚持使用if语句,但我的游戏还在运行。我尝试从Player类调用getScore方法,但是我得到了操作数错误。这是我的GuessingGame代码:

public class GuessingGame
{
public static void main (String [] args)
throws IOException
{

    String name;
    final int numberOfGuess = 5;

    //Create Scanner object
    Scanner input = new Scanner (System.in);
    Player[] player1 = new Player[numberOfGuess];

    //Ask user for name
    System.out.printf("\n Enter Player Name:");
    name = input.nextLine();

    PrintStream fout = new PrintStream(new File("PlayerData.txt"));
    for (int index = 0; index < player1.length ; index++)
    {
        int playerId = index + 1;
        player1[index] = new Player(name); // reference to Student object
        player1[index].setName(name);


        //Ask user for number input
        System.out.println("Please pic a number between 1 - 20");
        player1[index].setScore(Integer.parseInt(input.nextLine()));
        Random rand = new Random();
        int answer = rand.nextInt(20) + 1;
        System.out.println(answer);
        System.out.println(player1[index].getScores());

        if(answer >= player1[index].getScores())
        {
            System.out.println("Your guess is too low");
        }


    }
    fout.println( "" + player1[1].getName() );
    for (int index = 0; index < player1.length ; index++)
        {
            int playerId = index + 1;
            fout.println( "" + player1[index].getScores() );

            }

}

}`

这是我的Player类:

//Class declaration of Player class
public class Player
{
   /*--------------- Data Fields ---------------------------------------
   Attributes of the class
   */
   private String name;
   private int playerId;
   private int bestScore;
   private static int numberOfPlayers = 0;
   private ArrayList<Integer> scores = new ArrayList<Integer>();
   /* -------------- CONSTRUCTOR --------------------------------------
   */
   public Player(String name)
   {
       this.name = name;
       numberOfPlayers++;
       playerId = numberOfPlayers;

   }

   //Create set method for setName
   public void setName(String name)
   {
       this.name = name;
   }
   //Create set method for setScores
   public void setScore(int score)
   {
       scores.add(score);
   }
   //Create get method for getScores
   public ArrayList<Integer> getScores()
   {
       return scores;
   }


}

我没有把剩下的方法放在一起,因为它们不是问题。 我是否错误地设置了方法?如果是这样,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

这会尝试将intArrayList<Integer>进行比较:

if (answer >= player1[index].getScores())

也许您想将intArrayList的尺寸进行比较:

if (answer >= player1[index].getScores().size())

或将intArrayList的某些元素进行比较:

if (answer >= player1[index].getScores().get(someIndex))

从你的问题中不清楚所需的逻辑是什么。