как реализовать это, не используя бесконечные еще, если - PullRequest
0 голосов
/ 13 сентября 2018

поэтому мне нужно зашифровать и расшифровать, используя эту кодовую книгу.

cijuskla .... t, их 26.так что c становится a, а i становится b, а j становится c ... и t становится z.

У меня такой же набор для заглавных букв.

Первое, что пришло мне в голову, - это использовать бесконечное другое, если.

for(int i = 0; i < input.length(); i++) {
    if input.charAt[i] == 'a' {
         input.charAt[i] == 'c' }
    else if input.charAt[i] ==

есть лучший способдля этого мне не хватает ??

Ответы [ 3 ]

0 голосов
/ 13 сентября 2018

Я попробовал, и код будет как ниже.Некоторые комментарии по коду, чтобы понять ясно:

//add all letters key value pair to this list
final HashMap<Character, Character> letterMapForDecrypt = new HashMap<>();
letterMapForDecrypt.put('c', 'a');
letterMapForDecrypt.put('d', 'b');
letterMapForDecrypt.put('f', 'k');
letterMapForDecrypt.put('h', 'j');

//adding reverse type of decrpyt letter list
final HashMap<Character, Character> letterMapForEncrypt = new HashMap<>();
letterMapForDecrypt.forEach((key, value) -> letterMapForEncrypt.put(value, key));

//decrpyte
String stringToDecrypt = "cddfh";
final char[] charsOfDecrpyt = stringToDecrypt.toCharArray();
for (int i = 0; i < charsOfDecrpyt.length; i++) {
    //get value map and change this char
    charsOfDecrpyt[i] = letterMapForDecrypt.get(charsOfDecrpyt[i]);
}

System.out.println(charsOfDecrpyt);


//encrpte
String stringToEncrypt = "cddfh";
final char[] charsOfEncrypt = stringToEncrypt.toCharArray();
for (int i = 0; i < charsOfEncrypt.length; i++) {
    //get value map and change this char
    charsOfDecrpyt[i] = letterMapForEncrypt.get(charsOfDecrpyt[i]);
}

System.out.println(charsOfEncrypt);
0 голосов
/ 13 сентября 2018

Вместо этого вы можете использовать переключатель:

for(int i = 0; i < input.length(); i++) {
    switch (input.charAt[i]) {
        case 'a': input.charAt[i] = 'c';
                  break;
        case 'i': input.charAt[i] = 'b';
                  break;
        //...
        default: break; // nothing to do for the rest
}
0 голосов
/ 13 сентября 2018

Используйте карту для хранения пары ключ-значение. Найдите значение с помощью клавиши input.charAt [i] и замените. Нет необходимости в бесконечном if-else

    String input = "abcde";
    Map<Character, Character> encodedChar = new HashMap<Character, Character>();

    encodedChar.put('a', 'c');
    encodedChar.put('b', 'e');

    char[] tempInput = input.toCharArray();

    for (int i = 0; i < tempInput.length; i++) {
        tempInput[i] = encodedChar.get(tempInput[i]);
    }
    input = new String(tempInput);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...