Цезарь Шифр ​​не читает слова после пробела, не может понять, почему - PullRequest
0 голосов
/ 04 апреля 2019

Мне нужно написать простой шифр Цезаря для назначения, и я должен зашифровать сообщение «Это шифр Цезаря» с левым сдвигом 3. Я попытался использовать оператор IF с последующим «продолжить;» но это не работает, я не могу на всю жизнь понять, что вызывает эту проблему, ха-ха.

public static String encrypt(String plainText, int shiftKey) {
    plainText = plainText.toLowerCase();
    String cipherText = "";
    for (int i = 0; i < plainText.length(); i++) {
    char replaceVal = plainText.charAt(i);
    int charPosition = ALPHABET.indexOf(replaceVal);        
    if(charPosition != -1) {
        int keyVal = (shiftKey + charPosition) % 26;
        replaceVal = ALPHABET.charAt(keyVal);
    }

    cipherText += replaceVal;
    }
    return cipherText;
}
public static void main (String[] args) {
    String message;
    try (Scanner sc = new Scanner(System.in)) {
        System.out.println("Enter a sentence to be encrypted");
        message = new String();
        message = sc.next();
    }
 System.out.println("The encrypted message is");
 System.out.println(encrypt(message, 23));
}

}

1 Ответ

0 голосов
/ 04 апреля 2019

Вы читаете только одно слово с Scanner.next() и никогда используйте new String().Измените

message = new String();
message = sc.next();

на

message = sc.nextLine();

Стоит также отметить, что StringBuilder и простая арифметика - все, что вам нужно для шифра Цезаря.Например,

public static String encrypt(String plainText, int shiftKey) {
    StringBuilder sb = new StringBuilder(plainText);
    for (int i = 0; i < sb.length(); i++) {
        char ch = sb.charAt(i);
        if (!Character.isWhitespace(ch)) {
            sb.setCharAt(i, (char) (ch + shiftKey));
        }
    }
    return sb.toString();
}

public static void main(String[] args) {
    int key = 10;
    String enc = encrypt("Secret Messages Are Fun!", key);
    System.out.println(enc);
    System.out.println(encrypt(enc, -key));
}

Какие выходы

]om|o~ Wo}}kqo} K|o Px+
Secret Messages Are Fun!
...