#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.