Ya10
@Ya10

Как обьеденить слова в колекции?

Дано, вот такое задание:

1) Create a class MyTranslator with private field dictionary of HashMap
type. Add method addNewWord(String en, String ru), which add to dictionary new
word in two languages.
2) Add a new method translate(String en) which take some string in English, and returns
its translation in Russian as the value of the type String.
3) Create a class Main with a main() method. Add to method main() code creates
instance of MyTranslator. Add code to fill MyTranslator with few en-rus words pair
by invoking addNewWord() method.
For example:
“сat”, “кот”
“mouse”, “мышь”


Я уже реализовал часть кода, но стопорюсь на том, что бы они обьединяли слова вместе, при переводе

public class MyTranslator {
    private HashMap<String, String> dictionary;

    public MyTranslator(HashMap<String, String> dictionary) {
        this.dictionary = dictionary;
    }

    @Override
    public String toString() {
        return dictionary + "";
    }

    public MyTranslator() {
        dictionary = new HashMap<>();
    }

    public void addNewWord(String en, String ru) {
        dictionary.put(en, ru);
    }

    public String translate(String en) {

        for (Map.Entry<String, String> d : dictionary.entrySet())
            System.out.print(d.getValue() + " ");
        return en;
    }
}


как правильно нужно написать метод транслейт, что бы он находил в словаре нужно слово, обьеденял с другими и выводил в консоле, как указано в задании?

4) Add code to read string from console and pass it into translate method. Print result to
console.
5) Execute the program.
The program output must be like next example:
cat caught mouse
кот поймал мышь
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ответы на вопрос 2
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Добрый вечер.
1) У вас есть проблема тут:
public String translate(String en) {

        for (Map.Entry<String, String> d : dictionary.entrySet())
            System.out.print(d.getValue() + " ");
        return en;
    }

Вам нужно в метод передать слово на англ. языке, а вернуть слово на русском. А вы передаете и возвращаете англ. слово
Add a new method translate(String en) which take some string in English, and returns
its translation in Russian as the value of the type String.


2) Это по идее, даже лишнее. В задании сказано, что пополнять словарь вы будете при помощи метода addNewWord
public MyTranslator(HashMap<String, String> dictionary) {
        this.dictionary = dictionary;
    }


3)
как правильно нужно написать метод транслейт, что бы он находил в словаре нужно слово, обьеденял с другими и выводил в консоле, как указано в задании?

Вам нужно используя метод get ввести ключ (слово на англ) и получить перевод ().
Например,
public String translate(String en) {
return this.dictionary.get(en);
    }

P.S. Тут коллега Dmitry Roo прав. Надо в метод translate получить строку, разбить ее на части, достать переводы с собрать в коллекцию. Я тут ошибся.

4)
Add code to read string from console and pass it into translate method. Print result to
console.

Создайте метод, который поможет прочитать и добавить слова в словарь из консоли. Смотрите в сторону Scanner, System.in
Ответ написан
Комментировать
xez
@xez Куратор тега Java
TL Junior Roo
public String translate(String en) {
        return Arrays.stream(en.split(" ")) // создаем стрим из массива. Массив - строка разбитая по пробелам
                .map(dictionary::get)  // Мапим каждый элемент из коллекции dictionary
                .collect(Collectors.joining(" ")); // собираем стрим в одну строку, прибавляя пробел между элементами
    }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы