Я хочу использовать геттеры и сеттеры для игрового стола - PullRequest
0 голосов
/ 30 апреля 2018

Привет. Я пытаюсь настроить класс персонажа для каждого игрока в таблице лидеров, так как я не знаю, сколько времени таблица лидеров собирается собираться и зацикливать количество людей по количеству строк в таблице лидеров. Затем я пытаюсь «набрать» очки для каждой строки и снова сравнить каждую предыдущую, чтобы утверждать, что верхнее число - одна из верхних, я никогда раньше не использовал геттеры и сеттеры и, похоже, не могу понять, как это сделать, какая-нибудь помощь?

Вот код информации, которую я хочу получить для каждого человека, мне нужно найти player_picks, position и player_points. Затем мне нужно сравнить общее количество каждого player_picks с каждым игроком, когда я иду вниз по таблице лидеров. Если pick_total равен, то мне нужно сравнить их общее количество очков. Я пробовал это в течение нескольких недель, но кто-то предположил, что будет проще создать класс игрока, а затем использовать get и сеттеры, чтобы назначить атрибуты каждому из них. Так что я мог бы тогда сравнить player1 с игроком 2, игроком 2 и игроком 3 и т. Д. Что затрудняет, так это то, что я не знаю размер списка каждый раз, так что это сбивает меня с толку.

Ниже приведен код, который я использую, который дает мне атрибуты, которые я смотрю, чтобы «установить», но я не знаю, как настроить «людей» в классе человека, так как количество людей, которое требуется каждый раз с изменением (используя int размер) как разное количество людей присоединиться к каждой игре.

Я новичок в этом, поэтому, если я не объясню это хорошо, дайте мне знать.

public void test_player_leaderboard_entry() {
    int size = playerRows.size();
    for (int i = 0; i < size; i++) {
        //Position
        String position_first_player = Drivers.getDriver().findElement(By.cssSelector("[data-qa-position-value='" + i + "']")).getText();
        //Points
        String points_player = Drivers.getDriver().findElement(By.cssSelector("[data-qa-points-value='" + i + "']")).getText();
        //Username
        String username_player = Drivers.getDriver().findElement(By.cssSelector("[data-qa-player-value='" + i + "']")).getText();
        //Row Number
        Integer row = i + 1;
        Integer total_of_won_and_looking_good = 0;
        //PICKS
        for (int pick_number = 1; pick_number < 5; pick_number++) {
            String pick_status = Drivers.getDriver().findElement(By.xpath("//*[@id='root']/div/main/section[2]/section/div/ol/a[" + row + "]/li/div[3]/div[" + pick_number + "]/div")).getAttribute("data-qa-pick-state");
            //System.out.println(pick_status);
            if (Integer.parseInt(pick_status) == 2 || Integer.parseInt(pick_status) == 1) {
                total_of_won_and_looking_good = total_of_won_and_looking_good + 1;

            }
            //System.out.println(total_of_won_and_looking_good);
        }

        //System.out.println("On row number " + row + " we find " + username_player + " in position " + position_first_player + " with " + total_of_won_and_looking_good + " correct picks and " + points_player + " points!");
    }
}

1 Ответ

0 голосов
/ 01 мая 2018

Во-первых, вы не пытаетесь настроить класс персонажа для каждого игрока в таблице лидеров, вы пытаетесь создать класс Person и создать объект Person для каждой строки персонажа в таблице лидеров. Я настоятельно рекомендую прочитать Oracle Docs и узнать больше о классах и объектах.

В вашем цикле вы захотите создать новый объект Person, очистить необходимое значение, вызвать соответствующий установщик со значением и добавить этот объект проигрывателя в коллекцию. например,

Person p = new Person() //create new Person object
int points = Integer.parseInt(Drivers.getDriver().findElement(By.cssSelector("[data-qa-points-value='" + i + "']")).getText());
p.setPoints(points); //call setter for points field
personList.add(p); //add person to list

Пример простого класса person может выглядеть следующим образом. Обратите внимание, что реализация интерфейса Comparable позволяет сортировать объекты Person при сохранении в списке или массиве, как показано ниже.

public class Person implements Comparable<Person> { 

    private int score;

    public Person() { }

    public void setScore(int score) { this.score = score; }

    public int getScore() { return this.score; }

    public static void main(String[] args) {
        Person p1 = new Person();
        Person p2 = new Person();
        p1.setScore(80);
        p2.setScore(90);
        List<Person> people = new ArrayList<>();
        people.add(p1);
        people.add(p2);
        System.out.println("Before sorting: " + people.toString());
        Collections.sort(people);
        System.out.println("After sorting: " + people.toString());
    }

    @Override
    public int compareTo(Person p) {
        if (p.getScore() > this.score)
            return 1;
        if (p.getScore() < this.score)
            return -1;
        return 0;
    }

    public String toString() {
        return String.format("Person -> score: %d", this.score);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...