Loading...
PlamenDz avatar PlamenDz 0 Точки

Помощ за задача 4 от Maps, Lampda and Stream API

Може ли някой да ми помогне с тази задача:

4. Orders
Write a program, which keeps information about products and their prices. Each product has a name, a price and its
quantity. If the product doesn’t exist yet, add it with its starting quantity.
If you receive a product, which already exists increase its quantity by the input quantity and if its price is different,
replace the price as well.
You will receive products’ names, prices and quantities on new lines. Until you receive the command "buy", keep
adding items. When you do receive the command "buy", print the items with their names and total price of all the
products with that name.

Опитах да я рша така:

public class Orders {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        HashMap<String,HashMap<Double,Integer>> list = new HashMap<String,HashMap<Double, Integer>>();

        String input = "";
        while(!"buy".equals(input)){
            String[] data = sc.nextLine().split(" ");
            String product = data[0];
            double price = Double.parseDouble(data[1]);
            int quantity = Integer.parseInt(data[2]);

            if(!list.containsKey(product)){
                list.put(product, new HashMap<Double,Integer>());
                list.get(product).put(price,quantity);

            }else{
               но не зная как да достъпя и манипулирам вътршният Map.

Ако някой знае как или има готво решение ще съм много благодарен ако го сподели.

Благодаря предварително.

Тагове:
0
Fundamentals Module
Hristo13 avatar Hristo13 227 Точки

Пробвай да преработиш кода си с два мапа вместо да имаш един с вложен.

Map<String, Integer>, Map<String, Double> - в единия пазиш цената на продукта в другия quantity.

0
21/03/2019 18:25:27
PlamenDz avatar PlamenDz 0 Точки

Благодаря, това е добра идея. Не се бях сетил.

0
Hristo13 avatar Hristo13 227 Точки

По-добър вариант е. Ето и решение с вложен ама много се усложнява за тая проста задача.

 

https://pastebin.com/Wty82k6m

0
21/03/2019 19:15:27
PlamenDz avatar PlamenDz 0 Точки

Мерси. Успях да я реша с два Map-a, всъщност с три, направих един за резултата, иначе не мога да го принтирам.

Благодаря още веднъж, много ми помогна.

0
Hristo13 avatar Hristo13 227 Точки

За принтирането направи един цикъл

for(Map.Entry<String, Integer> entry : (името на мапа с интегера).entrySet()) {

print entry.getKey() " -> " ;

print entry.getValue * (името на мапа с Double).get(entry.getKey)

 

Или пък ги слей в един мап и принтирай накрая.

0
21/03/2019 19:34:16
Deianov avatar Deianov 1 Точки

 

 
package G_AssociativeArrays.Exercise; import java.util.*; public class E04 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String input; Map<String, Double[]> products = new LinkedHashMap<>(); while (!"buy".equalsIgnoreCase(input = scanner.nextLine())) { String[] data = input.split("\\s+"); String name = data[0]; double price = Double.parseDouble(data[1]); double quantity = Double.parseDouble(data[2]); products.putIfAbsent(name, new Double[] {0.0, 0.0}); products.get(name)[0] = price; products.get(name)[1] = products.get(name)[1] + quantity; } products.entrySet().forEach(e -> System.out.printf("%s -> %.2f%n", e.getKey(), e.getValue()[0] * e.getValue()[1])); } }

 

0
21/03/2019 21:16:36
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.