Нужна помощь Java для такого кода, как автозамена

Я пишу программу, которая является противоположностью автокоррекции. Логика заключается в том, что пользователь вводит предложение, когда при нажатии кнопки должна отображаться грамматическая противоположность предложению, введенному пользователем. Я примерно могу получить код. Я использовал логику соответствия. Но я не могу получить желаемый результат. Я связываю код с этим вопросом. Кто-нибудь может мне помочь?

imageButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String input = editText.getText().toString();
                String store = input;
                String store1 [] = store.split(" ");
                String correct[] = {"is","shall","this","can","will"};
                String wrong [] = {"was","should","that","could","would"};
                String output = "";
                for (int i=0;i<store1.length;i++) {
                    for(int j=0;j<correct.length;j++){
                        if(store1[i].matches(correct[j])) {
                            output = input.replace(store1[i], wrong[j]);


                            //store1[i] = wrong[j];
                        }
                        else
                        {
                            input.replace(store1[i], store1[i]);
                            //store1[i] = store1[i];
                        }

                    }
                mTextView.setText(output);

            }
        }});

1 ответ

Решение

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

 String store = input;
 String store1 [] = store.split(" ");

Как показано ниже, я сделал некоторую очистку для вас и реализовал вашу логику, используя интерфейс Map. Неправильное значение должно быть ключом карты, чтобы мы могли легко определить, является ли слово неправильным значением с помощью Map.containKeys(word). Если ключ найден, мы объединяем выходную переменную с правильным словом.

    String input = editText.getText().toString().split(" ");

    Map<String, String> pairs = new HashMap<>();
    pairs.put("is", "was");
    pairs.put("shall", "should");
    pairs.put("this", "that");
    pairs.put("can", "could");
    pairs.put("will", "would");

    String output = "";

    for (String word : input) {
        if (pairs.containsKey(word)) {
            output = output + pairs.get(word) + " ";
        } else {
            output = output + word + " ";
        }
    }

    mTextView.setText(output.trim());
Другие вопросы по тегам