Как уже упоминалось в @markspace, вы пропустили оператор break. Вот краткий отрывок из документации Java по операторам переключения:
Каждый оператор break завершает вмещающий оператор switch. Поток управления продолжается с первого оператора, следующего за блоком переключателей. Операторы break необходимы, потому что без них операторы в блоках переключателей не работают.
Также я рекомендую использовать специальный метод и циклы for
для упрощения отладки.
Следующий код дает желаемый результат:
public static String getAnswer() {
Scanner reader = new Scanner(System.in);
String input = reader.nextLine().toLowerCase();
String firstChar = input.substring(0, 1);
String secondChar = input.substring(1);
String[] chars = new String[] { "b", "r", "g", "y" };
String[] answers1 = new String[] { "Zero Blue", "Zero Red", "Zero Green", "Zero Yellow" };
String[] answers2 = new String[] { "One Blue", "One Red", "One Green", "One Yellow" };
if ((firstChar.equals("0"))) {
for (int i = 0; i < chars.length; i++) {
if (secondChar.equals(chars[i])) {
return answers1[i];
}
}
}
else if ((firstChar.equals("1"))) {
for (int i = 0; i < chars.length; i++) {
if (secondChar.equals(chars[i])) {
return answers2[i];
}
}
}
return "not valid";
}
public static void main(String[] args) throws IOException {
System.out.println(getAnswer());
}
РЕДАКТИРОВАТЬ: В дополнение к решению, приведенному выше, я хотел бы предложить более сложный, который предполагает использование перечислителей. Это должно сделать ваш код более понятным и конкретным, а также более модульным:
public enum Answer {
BLUE('b',"Blue"), RED('r',"Red"),
GREEN('g',"Green"), YELLOW('y',"Yellow");
private static final String[] prefix = new String[] {"Zero", "One"};
char letter;
String name;
Answer(char letter, String name) {
this.letter = letter;
this.name = name;
}
public static String getForInput(char input, int index) {
if (index > prefix.length)
return "value out of range " + index;
for (Answer answer : Answer.values()) {
if (input == answer.letter)
return prefix[index] + " " + answer.name;
}
return "unable to find answer for input " + input;
}
}
public static String getAnswer() {
System.out.println("Enter your input: ");
Scanner reader = new Scanner(System.in);
String input = reader.nextLine().toLowerCase();
int number = Integer.valueOf(input.substring(0, 1));
char letter = input.substring(1).charAt(0);
return Answer.getForInput(letter, number);
}