используя данные char в выражении switch - PullRequest
0 голосов
/ 06 января 2019

Я пытаюсь получить оператор 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}.

Ответы [ 3 ]

0 голосов
/ 06 января 2019

Вы забыли разрыв в каждом случае, поэтому все случаи проваливаются и в итоге все заканчиваются на values[i] = 2;

switch(SString.charAt(i)){
  case 'a':
    values[i] = 0;
    break; // this one for each
  case 'b':
    ...
0 голосов
/ 09 января 2019

Вы забыли оператор 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

0 голосов
/ 06 января 2019

Вы забыли break заявления.

switch (SString.charAt(i)) {
case 'a':
    values[i] = 0;
    break;
case 'b':
    values[i] = 1;
    break;
case 'c':
    values[i] = 2;  
    break;
}
...