Ява хранит переменные экземпляра и доступ с использованием одного из ключевых значений - PullRequest
0 голосов
/ 13 ноября 2018

В настоящее время я изучаю Java в универе и столкнулся с этой проблемой:

public class simpleStockManager {
    private String sku;
    private String name;
    private double price;

    public void newItem(String sku, String name, double price) {
        this.sku = sku;
        this.name = name;
        this.price = price;
    }

    public String getItemName(String sku) {
        return name;
    }
}

Я объявил класс и некоторые переменные экземпляра, и я пытаюсь получить доступ к элементам, используя sku.Поэтому, если я объявляю 3 элемента в следующем порядке:

simpleStockManager sm = new simpleStockManager();
sm.newItem("1234", "Jam", 3.25);
sm.newItem("5678", "Coffee", 4.37);
sm.newItem("ABCD", "Eggs", 3.98);

Когда я пытаюсь использовать метод getItemName с sku == "5678", он должен вернуть "Coffee", но он возвращает "Eggs".Я думаю, что это последний объявленный элемент, который перезаписывает предыдущий элемент, но я не знаю, как решить эту проблему.Любая помощь будет оценена.

1 Ответ

0 голосов
/ 13 ноября 2018

Каждый вызов newItem изменяет значения переменных вашего экземпляра.

Вы всегда получите последние значения, установленные m.newItem("ABCD", "Eggs", 3.98);

Если вы хотите использовать sku в качестве ключа для хранения нескольких переменных, вы можете использовать Map

Например:

class SimpleStockManager{
    // The key of your map will be sku, 
    //and the name and the price can be for exemple in a Product class
    private HashMap<String, Product>  products = new HashMap<>();

    public void newItem(String sku, String name, double price){
        // A call to newItem will create a new Product and store it 
        products.put(sku, new Product(name, price));
    }

    public String getItemName(String sku){
        if (products.containsKey(sku)){
            return products.get(sku).getName();
        }else {
            return " Product not found...";
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...