Java 保留空格字符不变的Caesar密码

Java 保留空格字符不变的Caesar密码,java,cryptography,caesar-cipher,Java,Cryptography,Caesar Cipher,我试图让加密函数忽略UserInput中单词之间的空格和符号。我应该使用isWhitespace还是什么?如何实现这一点 这个程序的输出是完全正确的,它将每个字母移到下一个7。但它不接受用空格或逗号分隔的两个单词的移位 我刚刚进入Java这个令人惊叹的世界&我真的很享受它!因此,这是我开始工作后的第三周 import java.util.Scanner; public class Test_Cipher{ public static final String ALPHABET = "a

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

这个程序的输出是完全正确的,它将每个字母移到下一个7。但它不接受用空格或逗号分隔的两个单词的移位

我刚刚进入Java这个令人惊叹的世界&我真的很享受它!因此,这是我开始工作后的第三周

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;
    }
}
import java.util.Scanner;
公共类测试密码{
公共静态最终字符串字母表=“abcdefghijklmnopqrstuvwxyz”;
公共静态字符串加密(字符串明文,int-shiftKey){
明文=明文。toLowerCase();
字符串密文=”;
for(int i=0;i
有两种方法:为角色创建正匹配或负匹配。在正匹配变量中,首先检查
纯文本。charAt(i)
是否是要保留的字符,在这种情况下,将其添加到
密文中,并使用循环继续

在另一种情况下,您可以检查是否返回
-1
,指示字母表不包含字符。在这种情况下,您将执行相同的操作:添加它并继续。这是我见过的经典Cesar“play”密码的常用方法:


您不想转置for循环中遇到的所有字符,因此需要在其中使用if条件。为什么不试着先自己创造这个,看看你能想出什么?此外,请工作的张贴代码,是更好的格式。它的工作。谢谢你的一拳!
// 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;
}