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

标签 java arrays methods arraylist

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

score = (20 – the number of guesses).

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

尽管我被 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;
   }


}

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

最佳答案

这尝试比较 intArrayList<Integer> :

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

也许您想比较 intArrayList 的大小:

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

或者比较 intArrayList 的某些元素:

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

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

关于java - 调用 Arraylist 方法并在 if 语句条件下调用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29513309/

相关文章:

javascript:禁用重写对象方法

javascript - 如何在 javascript 中为 json 对象创建方法?

java - 如何为具有可扩展属性的资源编写DAO?

sql - postgres json数组元素和空返回

c# - 在 C#2.0 中比较字符串与字符串数组的最快方法

ios - 将数组中的项目添加到特定索引处的不同数组

java - 在 Java 中读取文本文件最后一行的最佳方式是什么?

java - 从字符串中删除某些字符

Spring 中的 Java Spring hibernate 和 JPA

ios - 如何延迟调用多个参数的方法