ArrayList: Как arraylist.set, когда у вас есть несколько сеттеров - PullRequest
0 голосов
/ 17 декабря 2018

У меня сейчас 2 класса.Мой бот:

public class Bot {
    private int X;
    private int Y;
    private int degress;

    public int getX() {
        return X;
    }

    public int getY() {
        return Y;
    }

    public int getDegress() {
        return degress;
    }

    public void setX(int X) {
        this.X = X;
    }

    public void setY(int Y) {
        this.Y = Y;
    }
}

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

bots.set(bots.get(1).getDegress(),+1);

, но выдает мне эту ошибку: «Набор методов (int, Bot) в типе ArrayList не применим для аргументов (int, int)»

и как выглядит мой ArrayList

public static ArrayList<Bot> bots = new ArrayList<Bot>();

Итак, подведем итог.Как я могу изменить X, Y или Degress с помощью bots.set?

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

bots.set(bots.get(1).getDegress(),+1); в этой строке вы вызываете метод Set класса ArrayList, который используется для замены элемента по указанному индексу в списке.Он принимает 2 параметра: сначала индекс заменяемого элемента, а второй - заменяемый элемент.Так что в вашем случае int и экземпляр класса Bot.

Чтобы установить degrees в вашем объекте класса Bot, вам сначала нужно получить его из list bots и использоватьsetDegrees() на объекте класса ботов (который, кстати, отсутствует в вашем классе ботов).

bots.get(1).setDegrees(bots.get(1).getDegress()+1);
0 голосов
/ 17 декабря 2018

bots.set - это метод ArrayList.Чтобы изменить экземпляр Bot, необходимо вызвать метод Bot.

Это должно быть:

Bot bot = bots.get(1);
bot.setDegrees(bot.getDegrees()+1);

Или, конечно, вам понадобится метод setDegrees в вашемBot класс.

...