2015-04-08 4 views
1

Итак, меня попросили выполнить эту задачу: Напишите исполняемое консольное приложение GuessingGame, где игрок пытается угадать номер от 1 до 20. В начале каждой игры , GuessingGame создает объект Player , который будет использоваться для хранения игрового счета для данного игрока. Имя игрока - , назначенное из пользовательского ввода. Затем программа генерирует случайное число от 1 до 20 и просит игрока угадать номер. Когда игрок вводит номер, программа сообщает игроку, является ли оно слишком высоким или слишком низким. Игрок должен продолжать вводить цифры , пока не будет введен правильный номер. Счет вычисляется следующим образом:Вызов метода Arraylist и вызов его, если условие условия

score = (20 – the number of guesses).

Каждый игрок просят играть в игру пять раз, поэтому пять баллов сохраняются для каждого игрока. Затем приложение должно отображать средний и лучший результат для игрока.

Я получил игру, хотя я застрял в утверждении if. Я попытался вызвать метод getScore из класса Player, но получаю ошибки операнда. вот мой 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()); 

      } 

} 

}` 

А вот мой класс игрока:

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


} 

Я не ставил остальные методы, поскольку они не являются проблемой. Я неправильно задал методы? Если да, то как мне обойти эту проблему?

+0

Какая именно ошибка вы получаете? –

+0

ошибка: плохие типы операндов для бинарного оператора '> =' \t \t \t если (ответ> = player1 [индекс] .getScores()) первый тип: INT второго типа: ArrayList

ответ

2

Это попытка сравнить int Ань ArrayList<Integer>:

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

Может быть, вы хотите сравнить int с размером ArrayList:

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

или сравнить int к некоторому элементу от ArrayList:

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

Непонятно из вашего вопроса, какова желаемая логика.

+0

Это хороший улов :) –

+0

I хотите, чтобы иметь возможность сравнивать то, что у меня есть, в getScore сгенерированное случайное число, чтобы показать, что его предположение было либо низким, либо высоким. –

+0

@AnthonyGalpo. Можете ли вы быть более точным? Что именно вы хотите сравнить с ответом? Вы хотите найти, соответствует ли 'answer' любому из целых чисел в ArrayList, возвращаемых' getScores() ', или вы хотите что-то еще? – Eran