Как добавить результат строки в одном классе, в список строк в другом классе? - PullRequest
0 голосов
/ 13 апреля 2019

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

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

Это мой Аукционный класс

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.LinkedList;
import java.util.List;

public class Auction {
    private int auctionID;
    private boolean blocked = false;
    private double startPrice, reservePrice;
    private LocalDateTime closeDate;
    private Item item;
    private double UP, LOW;
    private double currentBid;
    private List<Bid> bids = new LinkedList<>();
    private Status status;
    private User seller;
    private boolean itemFound;
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd MM yyyy");
    private double bidAmount;
    private User highestBidder;

    public Auction(double startPrice, double reservePrice, double currentBid, User highestBidder,
            LocalDateTime closeDate, Item item, User seller, Status status) throws Exception {
        if (closeDate.isBefore(LocalDateTime.now().plusDays(7))) {
            this.startPrice = startPrice;
            this.reservePrice = reservePrice;
            this.closeDate = closeDate;
            this.item = item;
            this.highestBidder = highestBidder;
            this.currentBid = currentBid;
            this.seller = seller;
            UP = currentBid * 0.20;
            LOW = currentBid * 0.10;
        } else {
            throw new Exception("CloseDate error: " + closeDate.format(formatter));
        }
    }

    public void auctionVictory() {
        if (status == Status.CLOSED && currentBid >= reservePrice) {
            User winner = getHighestBidder();
            Item winnerItem = getItem();
            winnerItem.getItemName(itemName);
            winner.victories.add(itemName);
        }
    }
}

Класс моего предмета:

public class Item {
    private String itemName;

    public Item(String itemName, User seller) {
        setDescription(itemName);
    }

    public boolean checkItemSearch(String itemDescription) {
        if (itemName.equals(itemDescription)) {
            return true;
        }
        return false;
    }

    @Override
    public String toString() {
        return getItemName(itemName);
    }

    public void setDescription(String itemName) {
        this.itemName = itemName;
    }

    public String getItemName(String itemName) {
        return itemName;
    }
}

Класс моего покупателя:

public final class Buyer extends User {
    public static List<String> victories = new LinkedList<String>();

    public void Victory() {
    }

    public Buyer(String username, String password) {
        super(username, password);
    }
}

Я ожидаю, что метод auctionVictory получит Пользователя с самой высокой ставкой и получит Предмет, выставленный на аукцион, если текущая ставка выше резервной цены.

Как только я получу Item и Buyer, я хочу вызвать метод getItemName из класса Item и получить имя строки для этого элемента. После этого я хочу добавить эту строку в список «побед» в классе «Покупатель».

1 Ответ

1 голос
/ 13 апреля 2019

Ваш список побед представляет собой статическую переменную, которая означает, что он распределяется между каждым экземпляром класса Buyer, и доступ к нему через переменную экземпляра "winner" не имеет смысла.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...