Я думаю, что ответ Тима Бигелейзена решает проблему.Вот альтернативное решение, которое может быть полезным:
import java.util.HashMap;
import java.util.Map;
public class FunctionMap {
public static void main(String[] args) {
Map<Character, java.lang.Runnable> methodMap = new HashMap<>();
//If methods are similar, define them all in one fell swoop
for(char i ='a'; i<='y'; i++) {
final char finalI = i;
methodMap.put(i,
() -> System.out.println("Boring method " + finalI + " invoked"));
}
//If they are not similar, define them separately.
methodMap.put('z',
() -> System.out.println("This method is very different!"));
String userInput = "abvdxz";
for(char s: userInput.toCharArray())
methodMap.get(s).run();
}
}
Вывод:
Method a invoked
Method b invoked
Method v invoked
Method d invoked
Method x invoked
This method is very different!
Идея состоит в том, что вы можете поместить свои функции в карту так, как вы их определяете (этоможет быть даже проще, если функции похожи).Для чтения и анализа пользовательского ввода я предлагаю использовать подход в ответе Тима Бигелайзена.Здесь я предполагаю, что это уже сделано, и сосредотачиваюсь на попытке избежать выражения switch
.