Помогите с с задачей
Мне нужно доработать программу на Java, в которой мы задаем фрукт и количество, например, груша - 3, яблоки - 5, апельсины - 1, бананы - 4. При запуске программы нас просят ввести фрукты, и после введенного знака = нам выводится количество фруктов (Бананы, яблоки, =, 9). Есть программа, которая считает сумму введенных чисел:
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader reader =
new BufferedReader(
new InputStreamReader(System.in));
int sum = 0;
while (true) {
String x = reader.readLine();
if (x.equals("=")) {
System.out.println(sum);
break;
}
int y = Integer.parseInt(x);
sum = sum + y;
}
}
}
Ответы (1 шт):
Автор решения: Alexandr
→ Ссылка
Думаю что-то вроде того (если я конечно правильно понял задачу):
package com.somepackage;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) throws Exception {
Pattern pattern =
Pattern.compile("^([А-Яа-я]+) - (\\d+)$");
Map<String, Integer> fruits = new HashMap<>();
BufferedReader reader =
new BufferedReader(
new InputStreamReader(System.in));
while (true) {
String x = reader.readLine();
if (x.equals("=")) {
System.out.println(
String.join(", ", fruits.keySet()) + " - " +
fruits.values().stream().mapToInt(Integer::intValue).sum());
break;
}
Matcher matcher = pattern.matcher(x);
if (matcher.matches()) {
String fruit = matcher.group(1);
Integer count =
Integer.parseInt(
matcher.group(2));
fruits.put(fruit, count);
}
}
}
}
Пример:
Арбуз - 2
Дыня - 3
=
Дыня, Арбуз - 5