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

Calling an Arraylist method and calling it on if statement condition

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

score = (20 – the number of guesses).

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

尽管我卡在 if 语句上,但我的游戏运行正常了。我尝试从 Player class 调用 getScore 方法,但出现操作数错误。这是我的猜谜游戏代码:

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

            }

}

}`

这是我的播放器 class:

//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;
   }


}

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

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

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

也许您想将 intArrayList 的大小进行比较:

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

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

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

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