То, что вы пытаетесь сделать, очень похоже на конечный автомат, и они обычно реализуются с помощью таблицы переходов. После того, как вы настроите таблицу, вам нужно просто проиндексировать позицию, которую вы хотите получить. Предполагая, что все возвращаемые значения меньше 256, вы можете использовать двумерный байтовый массив:
byte table[][] = new byte[NUM_STATES][NUM_CHARACTERS];
// Populate the non-zero entries of the table
table[0]['b'] = 1;
table[1]['a'] = 2;
// etc...
private int transition(char current, int state) {
return table[state][current];
}