Как написать метод GetItemIndex

#java #arrays #object #aggregator

#java #массивы #объект #агрегатор

Вопрос:

Я создаю класс ShoppingCart, который представляет корзину покупок. Я хорошо разбираюсь в основах класса и метода getTotalPrice, но я не могу понять, как решить проблему getItemIndex… «Завершите метод getItemIndex следующим образом: если в списке элементов есть элемент с именем, переданным в параметр, верните индекс этого элемента в массиве. В противном случае верните -1. »

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

Я создал класс Items, переменные экземпляра и конструктор класса ShoppingCart. Я просмотрел другие методы корзины покупок, но не смог найти тот, который выполняет getItemIndex

я попробовал код, включенный в нижнюю часть, под названием getItemIndex… Я включил getTotalPrice на случай, если он понадобится в качестве ссылки.

  public class ShoppingCart{


private Items[] itemList;
//TODO: declare the number of distinct items in the cart
    private int numItems = 0;
private static final int INITIAL_CAP = 5; // the initial size of the 
    cart
private static final int GROW_BY=3;


// ---------------------------------------------------------
// Creates an empty shopping cart with a capacity for 5 items.
// ---------------------------------------------------------
public ShoppingCart(){
    itemList = new Items[INITIAL_CAP];
    numItems = 0;
}
public double getTotalPrice(){
    double totalPrice = 0;
    numItems = 0;
    for(int i = 0; i<itemList.length; i  ){
        if(itemList[i]!= null){
            totalPrice = totalPrice   (itemList[i].getQuantity()*itemList[i].getPrice());
            numItems  ;
        }
    }
    return totalPrice;
}
private int getItemIndex(){
    if(itemList(itemList.getName))
        return Items[itemList.getName];
    else 
        return -1;
} 
  

}

Вот класс items

      public class Items{
private String name;
private double price;
private int quantity;

public Items (String n, double p, int q){
    name = n;
    price = p;
    quantity = q;
}
public double getPrice(){
    return price;
}
public String getName(){
    return name;
}
public int getQuantity(){
    return quantity;
}
public void addQuantity(int amt){
    int newQuantity = amt   quantity;
    quantity = newQuantity;
}
public String toString(){
    return "item name: "   name   ", item quantity: "   quantity   ", total price: "   (price * quantity);
}
  

}

Я ожидаю метод, который является оператором if, но я не уверен, как получить ItemIndex…Я не уверен, что для этого также требуется цикл for. В другом классе я вызову этот метод, чтобы использовать его для имитации покупок.

Ответ №1:

Это должно сработать. Вы указываете nameOfItem, который пытаетесь найти. Затем выполните итерацию по всем элементам в массиве, если он находится в массиве, возвращает индекс.

 int getItemIndex(String nameOfItem){
   for(int i = 0; i < itemList.length; i  ){
      if(itemList[i].getName().equals(nameOfItem){
         return i;
      }
   }
   return -1;
} 
  

Комментарии:

1. Если это отвечает на ваш вопрос, пожалуйста, выберите ответ как правильный 🙂