Задание по Java, проблемы с Arrays

221
23 января 2019, 18:20

По учебе необходимо решить задание, в котором создается "магазин" с несколькими товарами, где пользователь может указывать количество товаров (оно обязательно больше нуля). У меня получилось практически все, но по заданию цену надо посчитать в отдельном классе. К моему удивлению, я столкнулся с проблемой - ума не приложу как правильно это осуществить

Вот мой существующий код -

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 () {
    // Здесь надо сделать калькуляцию
    }
Answer 1

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));
READ ALSO
Java приложение, разрешение имен при помощи /etc/hosts

Java приложение, разрешение имен при помощи /etc/hosts

Мне нужно изменить свой сервис так, чтобы IP-адреса были не захардкожены в нем, а использовались имена из /etc/hostsВот часть кода приложения:

153
драйвер для базы оракл?

драйвер для базы оракл?

Использовал mysql драйвер для соединения с базойdb

155
Как удалить namespace только в атрибуте тега?

Как удалить namespace только в атрибуте тега?

Мне надо чтобы внутри xml один атрибут внутри тега был без префикса xsi: и для этого я нарыл решение использовать xslt

224