凯撒密码与空格字符保持不变

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了凯撒密码与空格字符保持不变相关的知识,希望对你有一定的参考价值。

我试图让加密函数忽略UserInput中的空格和单词之间的符号。我应该使用isWhitespace还是什么?以及如何实现?

该程序的输出完全正确,它将每个字母移动到下一个7。但是它不接受用空格或昏迷分隔的2个单词。

我是Java新世界的新手,我真的很享受!因此这是我开始以来的第3个星期。

import java.util.Scanner;

public class Test_Cipher{
    public static final String ALPHABET = "abcdefghijklmnopqrstuvwxyz";

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

有两种方法可以做到这一点:为角色创建一个正面匹配或者为负角色创建一个正匹配。在正匹配变量中,首先检查plainText.charAt(i)是否是您想要保留的字符,在这种情况下,将其添加到带循环的cipherTextcontinue中。

在另一个中,您可以检查indexOf是否返回-1,表明该字母表不包含该字符。在这种情况下,你做同样的事情:添加并继续。这是我见过的经典Ceasar“play”密码的常用方法:

// introduce a local variable, you don't want to perform charAt twice
char c = plainText.charAt(i);
int charPosition = ALPHABET.indexOf(c);
// if charPositions is -1 then it is not found 
if (charPosition == -1) { // or define a constant NOT_FOUND = -1
    cipherText += c;
    // continue with the for loop
    continue;
}

以上是关于凯撒密码与空格字符保持不变的主要内容,如果未能解决你的问题,请参考以下文章

加密给定的文本字符串 - 凯撒密码 [关闭]

Python 凯撒密码解码器

水平输出包含空格的转换文本(凯撒密码)

字符串操作练习:星座凯撒密码99乘法表词频统计预处理

字符串操作练习:星座凯撒密码99乘法表词频统计预处理

lesson 4:凯撒密码问题