【问题标题】:Calling an Arraylist method and calling it on if statement condition调用 Arraylist 方法并在 if 语句条件下调用它
【发布时间】:2015-06-13 07:58:04
【问题描述】:

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

score = (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;
   }


}

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

【问题讨论】:

  • 您得到的确切错误是什么?
  • 错误:二元运算符 '>=' 的操作数类型错误 if(answer >= player1[index].getScores()) 第一种类型:int 第二种类型:ArrayList

标签: java arrays methods arraylist


【解决方案1】:

这会尝试将intArrayList&lt;Integer&gt; 进行比较:

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

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

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

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

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

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

【讨论】:

  • 这是一个很好的收获:)
  • 我希望能够将我存储在 getScore 中的内容与生成的随机数进行比较,以显示他的猜测是低还是高
  • @AnthonyGalpo 你能更准确一点吗?您究竟想将answer 与什么进行比较?你想知道answer是否等于getScores()返回的ArrayList中的任何一个整数,还是你想要别的?
  • 每次用户输入猜测时,我都必须将“答案”与存储在“getScore()”中的用户得分进行比较。
  • @AnthonyGalpo 您希望比较 getScore() 的哪个元素?首先?最后一个?
猜你喜欢
  • 2013-03-20
  • 2013-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-12
  • 1970-01-01
相关资源
最近更新 更多