По учебе необходимо решить задание, в котором создается "магазин" с несколькими товарами, где пользователь может указывать количество товаров (оно обязательно больше нуля). У меня получилось практически все, но по заданию цену надо посчитать в отдельном классе. К моему удивлению, я столкнулся с проблемой - ума не приложу как правильно это осуществить
Вот мой существующий код -
import java.util.Scanner;
import java.util.ArrayList;
public class GoShopping {
public static void main (String[] args) {
Scanner inputReader = new Scanner(System.in);
Shop shopping = new Shop();
System.out.print("How many shampoos? ");
shopping.buy("Shampoo", Integer.parseInt(inputReader.nextLine()));
System.out.print("How many soaps? ");
shopping.buy("Soap", Integer.parseInt(inputReader.nextLine()));
System.out.print("How many towels? ");
shopping.buy("Towel", Integer.parseInt(inputReader.nextLine()));
System.out.println("Total price: " + shopping.getTotalPrice());
}
}
class Product {
public String name;
public int price;
public int qty;
public Product (String name, int price, int qty) {
this.name = name;
this.price = price;
this.qty = qty;
}
public void setQty (int qty) {
this.qty = qty;
}
}
class Shop {
private static ArrayList<Product> products;
public Shop() {
products = new ArrayList<Product>();
products.add(new Product ("Shampoo, 10, 0));
products.add(new Product ("Soap", 3, 0));
products.add(new Product ("Towel", 25, 0));
}
public void buy(String name, int qty) {
for (int i = 0; i < products.size(); i++) {
if (products.get(i).name == name)
products.get(i).SetQty(qty);
}
}
public int getTotalPrice () {
// Здесь надо сделать калькуляцию
}
Write the code for the method getTotalPrice() at the Shop Class
Пройтись циклом и подсчитать:
public int getTotalPrice() {
int total = 0;
for (Product x : products) {
total += x.price * x.qty;
}
return total;
}
С java 8 можно и через стримы подсчитать. Будет примерно так:
public int getTotalPrice() {
return products.stream().mapToInt(x -> x.price * x.qty).sum();
}
Стримы очень просто распараллеливаются, достачно заменить stream
на parallelStream
:
return products.parallelStream().mapToInt(x -> x.price * x.qty).sum();
Аналогом .mapToInt(...).sum();
может быть collect(Collectors.summingInt(...))
:
return products.stream().collect(Collectors.summingInt(x -> x.price * x.qty));
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Мне нужно изменить свой сервис так, чтобы IP-адреса были не захардкожены в нем, а использовались имена из /etc/hostsВот часть кода приложения:
Мне надо чтобы внутри xml один атрибут внутри тега был без префикса xsi: и для этого я нарыл решение использовать xslt