Вывод values в Map в зависимости от ввода пользователя

185
10 декабря 2021, 05:30

Есть LinkedHashMap, вот часть для примера:

public class Codec {
    public Map<String, String> dataMap = new LinkedHashMap<>();
    public void putData() {
        dataMap.put("affect", "влиять");
        dataMap.put("after", "после");
        dataMap.put("again", "опять");
        dataMap.put("against", "против");
        dataMap.put("age", "возраст");
    }
}

Мне нужно, чтобы пользователь вводил слово, или несколько за один ввод, на английском, а программа выдавала на русском. Я написал класс с методом, который делает это с одним словом:

public class Do {
    Codec codec = new Codec();
    Scanner scanner = new Scanner(System.in);
    String s = scanner.nextLine().toLowerCase();
    public void encode() {
        codec.putData();
        if (codec.dataMap.containsKey(s)) {
            System.out.println("ввод пользователя" + " " + s);
            System.out.println("Ответ" + " " + codec.dataMap.get(s));
        } else {
            System.out.println("try one more time");
        }
    }
}
Ввод пользователя: age
Ответ: возраст

Но я не могу понять, как это правильно сделать с несколькими словами ввода. Извиняюсь заранее, если это простой вопрос, так как только учусь и могу не понимать элементарных вещей.

Answer 1

Попробуйте разобраться для начала с этим кодом. Не забывайте про правила именования переменых и методов, а так же про инкапсуляцию. Удачи

import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.stream.Collectors;
public class Codec {
    private final Map<String, String> DATA;
    public Codec() {
        this.DATA = new LinkedHashMap<>();
        DATA.put("affect", "влиять");
        DATA.put("after", "после");
        DATA.put("again", "опять");
        DATA.put("against", "против");
        DATA.put("age", "возраст");
    }
    public String execute (String userInput) {
        return Arrays.stream(userInput.toLowerCase().split(" "))
                .map(t->DATA.getOrDefault(t.trim(), "*"))
                .collect(Collectors.joining(" "));
    }
}
import java.util.Scanner;
public class Do {
    private final static Codec CODEC = new Codec();
    public static void main(String[] args) {
        String userInput = new Scanner(System.in).nextLine();
        String result = CODEC.execute(userInput);
        System.out.println("Ввод пользователя : " + userInput);
        System.out.println("Ответ : " + result);
    }
}
READ ALSO
Не запускается mvn package

Не запускается mvn package

Всплывает такая ошибка: [ERROR] The goal you specified requires a project to execute but there is no POM in this directory (C:\Users\User)Please verify you invoked Maven from the correct directory

164
Простой вопрос по верстке по fontawesome

Простой вопрос по верстке по fontawesome

У меня есть гамбургер он выводится, все окfontawesome работает

81
Реализация функции с помощью алгоритма Стаи серых Волков

Реализация функции с помощью алгоритма Стаи серых Волков

Задавал вопрос по этому же примеру, но с реализацией по генетическому алгоритмуСейчас мне нужно реализовать этот же пример, только с помощью...

115
множество (объединение/пересечение)

множество (объединение/пересечение)

Реализую отд множество с использованием бинарного дерева поискаСтолкнулась с такой проблемой: как реализовать в данном случае операции...

58