Краткий проект: инвентаризация электроники

#java #arrays #for-loop #arraylist

#java #массивы #для цикла #список массивов

Вопрос:

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

 65321,Tablet,54,150.00
91524,Monitors,24,125.50
25013,Printers,30,65.75
32841,Router,67,90.15
53214,Modem,50,50.50
26442,Hard Drive,14,40.89
30224,Power Supplies,44,125.44
41557,CPU,39,149.54
71561,Headphones,40,75.24
  

Это то, что я сделал до сих пор:

InventoryCalculate.java

 ArrayList<BookItem> inventory = new ArrayList<>();
        BufferedReader inFile = new BufferedReader(new FileReader("C:\Users\Documents\Data\stock.txt"));
        String line;
        line = input.nextLine();
        String[] tokens = line.split(",");
        int itemNumber = Integer.parseInt(tokens[0]);
        String description = tokens[1];
        int quantity = Integer.parseInt(tokens[2]);
        double unitCost = Double.parseDouble(tokens[3]);

        System.out.println("Inventory Item");
        System.out.println("Number  Description           Quantity  Unit Price          Value");
  

Inventorystock.java

 public class InventoryItem {

private int itemNumber;
private String description;
private int quantity;
private double unitCost;

public InventoryItem(int itemNumber, String description, int quantity, double unitCost) {
    this.itemNumber = itemNumber;
    this.description = description;
    this.quantity = quantity;
    this.unitCost = unitCost;
}

public int getItemNumber() {
    return itemNumber;
}

public void setItemNumber(int itemNumber) {
    this.itemNumber = itemNumber;
}

public String getDescription() {
    return description;
}

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

public int getQuantity() {
    return quantity;
}

public void setQuantity(int quantity) {
    this.quantity = quantity;
}

public double getUnitCost() {
    return unitCost;
}

public void setUnitCost(double unitCost) {
    this.unitCost = unitCost;
} }
  

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

Ожидаемый результат:

 Number  Description           Quantity  Unit Price         Value
 65321  Tablets                     54      150.00      8,100.00
 91524  Monitors                    24      125.50      3,012.00
 25013  Printers                    30       65.75      1,972.50
 32841  Routers                     67       90.15      6,040.05
 53214  Modems                      50       50.50      2,525.00
 26442  Hard Drives                 14       40.89        572.46
 30224  Power Supplies              44      125.44      5,519.36
 41557  CPU                         39      149.54      5,832.06
 71561  Headphones                  40       75.24      3,009.60
  

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

1. В чем именно заключается сложность? Вы спрашиваете, как получить значение 8100 на основе цены единицы 150 и количества 54? Как вы думаете, почему вам нужно установить это значение 8100. Вам не нужно устанавливать это. Вам нужно получить это, чтобы распечатать .

2. Я имею в виду, как получить общую стоимость каждого элемента. Извините, я просто опечатался.

3. Банан стоит 5 долларов, вы покупаете 4 банана, сколько вам нужно заплатить? 5*4. Это простое умножение. Здесь то же самое. У вас есть 54 планшета. Каждый стоит 150. Таким образом, общее количество составляет 54 * 150 = 8100. Это действительно то, о чем вы спрашиваете?

4. Да, это то, что я имею в виду.

Ответ №1:

Создайте метод, который берет общее количество товара, умножает его на стоимость единицы и затем возвращает результат. Добавьте следующий код в свой класс InventoryItem.

  public double getTotalValueOfItem()
 {
      return unitCost * quantity;
 }
  

Ответ №2:

Добавьте другое свойство в класс InventoryItem как totalValue и добавьте методы setter, getter с вашей логикой. Лучший способ сохранить расчет общей стоимости в методе, в котором вы отображаете сведения.

 public class InventoryItem {

    private int itemNumber;
    private String description;
    private int quantity;
    private double unitCost;
    private double totalValue;

    public InventoryItem(int itemNumber, String description, int quantity, double unitCost) {
        this.itemNumber = itemNumber;
        this.description = description;
        this.quantity = quantity;
        this.unitCost = unitCost;
    }

    public int getItemNumber() {
        return itemNumber;
    }

    public void setItemNumber(int itemNumber) {
        this.itemNumber = itemNumber;
    }

    public String getDescription() {
        return description;
    }

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

    public int getQuantity() {
        return quantity;
    }

    public void setQuantity(int quantity) {
        this.quantity = quantity;
    }

    public double getUnitCost() {
        return unitCost;
    }

    public void setUnitCost(double unitCost) {
        this.unitCost = unitCost;
    }     

    public double getTotalValue() {
        return totalValue;
    }

    public void setTotalValue(int quantity, double unitCost) {
        this.totalValue = (double) quantity * unitCost;
    } 

}
  

Вы можете добавить этот метод для печати сведений об элементе

 public void printDetails() {
 System.out.println("NumbertDescriptiontQuantitytUnit PricetValue");
 List < InventoryItem > inventoryItemsList = new ArrayList < InventoryItem > ();
 inventoryItemsList.add(new InventoryItem(1, "description 1", 2, 50.0));
 inventoryItemsList.add(new InventoryItem(2, "description 2", 3, 40.0));
 for (InventoryItem item: inventoryItemsList) {
     System.out.println(item.itemNumber   "t"   item.description   "t"   item.quantity   "t"   item.unitCost   "t"   item.totalValue);
 }
}
  

Вы можете сохранить сведения об элементах инвентаризации в виде строки или списка, как показано в методе printDetails. Надеюсь, этот метод «printDetails» решил вашу проблему. Если вы действительно хотите сохранить сведения об элементе в виде строки, то вы можете сохранить все сведения об элементе в массив string.

Убедитесь, что импортировали необходимые библиотеки и классы модели следующим образом.

 import java.util.List;
import java.util.ArrayList;
import <package>.InventoryItem;
  

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

1. Это то, что я думаю. Еще один вопрос: я хочу знать, как сохранить эти четыре фрагмента информации (номер товара, описание, количество, цену и итоговое значение) в одной строке (посмотрите на мой ожидаемый результат).

2. @BeckyLin Я добавил метод «printDetails», и если вы отобразите это в консоли / терминале, нужно использовать что-то другое для пробелов t — tab. Там я использую ArrayList только для демонстрации.

3. Я только что добавил это в InventoryCalculate.java но красная строка появилась на for (InventoryItem item : inventoryItemsList)

4. Вам необходимо импортировать следующие библиотеки java.util. Список и java.util. Список массивов. Надеюсь, вы добавили это. Это должна быть другая проблема. Каков тип inventoryItemsList? это должен быть ArrayList.