Мой код расшифровки не работает правильно

Я не уверен, но я думаю, что моя проблема в том, что моя функция не сравнивает правильность символа. Правильно ли я использую Switch?

мой ввод x - это строка, и когда x = "aaaaa", он возвращает "aaaaa" вместо "zzzzz".

String c = "";
        for (int i = 0; i < x.length(); i++) {
            char getChar = x.charAt(i);

            switch (getChar) {
                case 1: (getChar) = 'a';
                        c += "z";
                        break;
                case 2: (getChar) = 'b';
                        c += "y";
                        break;
                case 3: (getChar) = 'c';
                        c += "x";
                        break;
                case 4: (getChar) = 'd';
                        c += "w";
                        break;
                case 5: (getChar) = 'e';
                        c += "v";
                        break;
                case 6: (getChar) = 'f';
                        c += "u";
                        break;
                case 7: (getChar) = 'g';
                        c += "t";
                        break;
                case 8: (getChar) = 'h';
                        c += "s";
                        break;
                case 9: (getChar) = 'i';
                        c += "r";
                        break;
                case 10:(getChar) = 'j';
                        c += "q";
                        break;
                case 11:(getChar) = 'k';
                        c+= "p";
                        break;
                case 12:(getChar) = 'l';
                        c += "o";
                        break;
                case 13:(getChar) = 'm';
                        c += "n";
                        break;
                default :
                        c += x.charAt(i);
            }
        }

    System.out.println(c);
}
1

2 ответа

Решение
switch (getChar)//<--You are passing charcter in switch case 
//but checking for 1,2 int as case 1,2...

То, что вам нужно изменить, это ваш case

как в switch вы будете передавать символы, такие как a,b,c...

switch(getchar)
{
 case 'a':
  //yourwork
  break;
 //do this for all letters
}

НОТА

Кроме того, для заключения договора StringВы должны использовать StringBuilder (как Maroun Maroun) уже предложил и использовать stringBuilder.append('char') метод для добавления вашего персонажа в String Builder напрямую не нужно использоватьString(т.е. "а", "б" и т. д.).

5

switch Выписка не лучший вариант, если все случаи обрабатываются практически одинаково и могут быть легко преобразованы в один расчет. Вы можете заменить весь оператор switch следующим if/else блок:

if (getChar >= 'a' && getChar <= 'm') {
    char newChar = (char) ('z' - (getChar - 'a'));
    c += newChar;
} else {
    c += getChar;
}

ПРИМЕЧАНИЕ: @TAsk и @MarounMaroun правы, советуя вам использовать StringBuilder для поднятия результата.

0
Другие вопросы по тегам