Сокращение кода String в if

223
28 октября 2017, 15:00

У меня имеется следующее "meow (вопрос) - wow (ответ). И так далее"
Так вот, можно ли сократить данный код?

1) (ЖЕЛАТЕЛЬНО) Хочу использовать парсинг из (.txt/.html/.db) файла, который будет находиться в assets.
2) Или же использовать сокращение в MainActivity.java

 @Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    if(charSequence.toString().equals("meow")) textView.setText("wow");
    if(charSequence.toString().equals("stack")) textView.setText("overflow");
    if(charSequence.toString().equals("bang")) textView.setText("boom");
    if(charSequence.toString().equals("hello")) textView.setText("bye");
    if(charSequence.toString().equals("meow")) textView.setText("wow");
}
Answer 1
  1. Не следует каждый раз вызывать charSequence.toString(), его можно вызвать один раз.
  2. Не нужно столько if, можно использовать switch-case.

Получится следующее:

@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    switch (charSequence.toString()) {
        case "meow":
            textView.setText("wow");
            break;
        case "stack":
            textView.setText("overflow");
            break;
        case "bang":
            textView.setText("boom");
            break;
        case "hello":
            textView.setText("bye");
            break;
    }
}

Строки можно вынести в final-переменные, либо в ресурсы.

Также, как посоветовали в соседнем ответе, вопрос-ответ можно поместить в HashMap:

HashMap<String, String> baseMap = new HashMap<>();
baseMap.put("meow", "wow");
baseMap.put("stack", "overflow");
baseMap.put("bang", "boom");
baseMap.put("hello", "bye");

А затем просто получать значение по ключу:

@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    String answer = baseMap.get(charSequence.toString());
    if (answer != null) {
        textView.setText(answer);
    }
}
Answer 2

не уверен, что точно вас понял. Можно например сохранить список вопрос-ответ в мапу, а в методе просто вытаскивать по ключу нужный текст и вставлять в textView;

READ ALSO
Доступ к классам в корневой папке проекта

Доступ к классам в корневой папке проекта

Имеется стандартная архитектура Maven проектаВ папке src/main/java у меня есть класс Guy

214
Как сделать цикл Java? [требует правки]

Как сделать цикл Java? [требует правки]

Есть вот такое задание

238
Создание каталога и файла с кириллицей в именах

Создание каталога и файла с кириллицей в именах

Как в Java создать каталог и файл с кириллицей в именах? Например:

237
java решение уравнения

java решение уравнения

Помогите решить задачу на java, не понимаю как решить эту задачу без ввода X, Y

243