2015-04-01 3 views
-1
UML: 
-name: String 
-playerId: int 
-scores: int[] 
-bestScore: int 
-numberOfPlayers: int 
<< constructors>> 
+Player() 
+Player(name: String) 
<< set methods>> 
+setName(name: String):void 
+setScores(score: int[]):void 
<< get methods >> 
+getPlayerId():int 
+getName():String 
+getScores():int[] 
+getBestScore(): int 
+calculateAverage(): double 
<< helper methods >> 
-calculateBestScore(): void 
  • Конструкторы увеличит статические переменные numberOfPlayers, а затем присвоить значение из numberOfPlayers в playerId.
  • Открытый метод calculateAverage() определяет средний балл для игрока из данных , хранящихся в массиве баллов.
  • Метод getBestScore() вызывает метод private helper метода calculateBestScore() до , который определяет самый высокий балл, достигнутый до сих пор игроком.

Любые идеи, как мне установить, что numberOfPlayers присваивает значение playerId? И как мне рассчитать методы расчета и расчетаBestScore?Пожалуйста, помогите застрял на этой диаграмме UML

Мой код на данный момент:

//Class declaration of Player class 
    public class Player 
    { 
     /*--------------- Data Fields -------------------------------------- 
     Attributes of the class 
     */ 
     private String name; 
     private int playerId; 
     private int bestScore; 
     private int numberOfPlayers; 
     private int scores; 
     /* -------------- CONSTRUCTOR -------------------------------------- 
     */ 
     public Player(String name) 
     { 
      this.name = name; 
      this.numberOfPlayers = numberOfPlayers + 1; 
      this.playerId = this.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 = score; 
     } 
     //Create get method for getPlayerId 
     public int getPlayerId() 
     { 
      return playerId; 
     } 

     //Create get method for getName 
     public String getName() 
     { 
      return name; 
     } 
     //Create get method for getScores 
     public int getScores() 
     { 
      return scores; 
     } 
     //Create get method for getBestScore 
     public int getBestScore() 
     { 
     return bestScore; 
     } 
     //Create get method for calcualteAverage 
     public double calculateAverage() 
     { 
     } 
     } 
+2

Пожалуйста, выберите лучшее название: представьте себе, кто-то решает аналогичную задачу. Название должно дать ему понять, помогает ли этот вопрос ему или нет. –

+0

Где находится массив баллов? И вычисление среднего очень просто и прямо вперед, с лучшим результатом. – Sybren

+0

Да, это был мой первый пост, так что я понятия не имел, как опубликовать вопрос. В следующий раз я сделаю название более конкретным. Спасибо –

ответ

0

Конструкторов увеличат статические переменные numberOfPlayers, а затем присвоить значение numberOfPlayers к playerId

Дайте переменную static идентификатора , а также инициализировать его:

private static int numberOfPlayers = 0; 

Каждый раз, когда вы создаете новый класс игрока, увеличиваем его на 1:

public Person() { 
    numberOfPlayers++; 
} 

Вам нужен способ, чтобы выставить значение numberOfPlayers, и сделать его static поэтому любой класс игрока можно назвать:

public static int getNumPlayers() { 
    return numberOfPlayers; 
} 

Test это обоснованный подход, как, например:

Person a = new Person(); 
Person b = new Person(); 
Person c = new Person(); 

System.out.println(c.getNumPlayers()); //will be 3 based on the above 

что касается расчета баллов, ваш getScores и setScore методы будут проблематичными. Во-первых, getScores подразумевает, что вы должны вернуть более одного счета. Во-вторых, setScore меня интересует, сколько раз вы должны сделать это для одного игрока, и где вы будете хранить значения по мере их роста в коллекции баллов? Я считаю, что для меня будет слишком амбициозным догадываться о различных подходах, которые могут удовлетворить ваши потребности. Если это школьное задание, обратитесь к своему инструктору. Я поделюсь этот один подход, который использует структуру ArrayList данных:

private ArrayList<Integer> scores = new ArrayList<Integer>(); 

public Person() { 

} 

public void setScore(int score) { 
    scores.add(score); 
} 

Чтобы получить лучший результат - how to get maximum value from the List/ArrayList

Чтобы получить средний балл - Calculating average of an array list?

+0

Спасибо за это @ThisClark. Вторая часть заключалась в создании исполняемого приложения, которое попросит пользователя угадать число от 1 до 20.Каждому игроку предлагается сыграть в игру пять раз, поэтому для каждого игрока хранятся пять баллов. Я попытаюсь сделать это сам с этого момента, я действительно просто застрял в этой части numberOfPlayers. Еще раз большое спасибо –

+0

Любые идеи, что мой метод get должен быть как для getScores. Я установил оценки в закрытый ArrayList score = new ArrayList (); и setScore, как вы упомянули выше, но я получаю ошибки в getScore(). public int getScores() \t { \t \t Результаты поиска; \t} –

+0

@AnthonyGalpo Ваш метод определяется как 'public int getScores()', но мой пример объявил переменную оценок как 'private ArrayList баллов', поэтому вам нужно переопределить ваш метод как' public ArrayList getScores() 'then it должно сработать. В этом случае возвращаемый тип 'ArrayList ' вашего метода просто должен соответствовать тому, что вы возвращаете. – ThisClark

Смежные вопросы