Я пытаюсь получить оператор case для добавления целого числа в массив целых чисел, используя данные char, извлеченные из строки.
int x = SString.length() - 1;
int[] values = new int[x + 1];
for (int i = 0; i <= x; i++) {
System.out.println(keyword.charAt(i));
switch (SString.charAt(i)) {
case 'a':
values[i] = 0;
case 'b':
values[i] = 1;
case 'c':
values[i] = 2;
System.out.println(values[i]);
}
}
мой ожидаемый результат для случая, когда SString = abc - это values = {0,1,2}. Вместо этого values = {2,2,2}.




Вы забыли заявления break.
switch (SString.charAt(i)) {
case 'a':
values[i] = 0;
break;
case 'b':
values[i] = 1;
break;
case 'c':
values[i] = 2;
break;
}
Чувствую себя абсолютным идиотом. Я смотрел на это около 3 часов, и это ни разу даже не пришло мне в голову.
Вы забыли о перерыве в каждом операторе case, все ли случаи проваливаются и в конечном итоге все заканчиваются values[i] = 2;
switch(SString.charAt(i)){
case 'a':
values[i] = 0;
break; // this one for each
case 'b':
...
Вы забыли оператор break, а System.out должен находиться за пределами оператора switch.
String SString = "abc";
int x = SString.length() - 1;
int[] values = new int[x + 1];
for (int i = 0; i <= x; i++) {
switch (SString.charAt(i)) {
case 'a':
values[i] = 0;
break;
case 'b':
values[i] = 1;
break;
case 'c':
values[i] = 2;
break;
default:
break;
}
System.out.print(values[i] + " ");
}
Выход: 0 1 2
Коммутаторам требуются операторы
break.