Java Ceasar加密机完全丢失空格

Java Ceasar加密机完全丢失空格,java,math,encryption,Java,Math,Encryption,我试图用多个密码在java中编写一个基本的加密/解密程序,但我遇到了一个ceasar密码的问题 它可以很好地处理没有空格的字符串,但是如果我在字符串中加一个空格,它会加密到空格的所有内容,但后面什么都不会。我可能错过了一些基本的东西,但有人看到了问题吗 任何关于编码风格的提示都会很好,干杯:D if (encdec.equals("E")){ System.out.println("Please input the shift you would like to

我试图用多个密码在java中编写一个基本的加密/解密程序,但我遇到了一个ceasar密码的问题

它可以很好地处理没有空格的字符串,但是如果我在字符串中加一个空格,它会加密到空格的所有内容,但后面什么都不会。我可能错过了一些基本的东西,但有人看到了问题吗

任何关于编码风格的提示都会很好,干杯:D

        if (encdec.equals("E")){
        System.out.println("Please input the shift you would like to use :> ");
        int shift = in.nextInt();
        System.out.println("Please input the message you would like to be encrypted :>");
        String encryptionInitial = in.next();
        int len = encryptionInitial.length();
        String s = "";
        for(int count = 0; count < len; count++){
            char c = (char)(encryptionInitial.charAt(count) + shift);
            if (c > 'z'){
                s += (char)(encryptionInitial.charAt(count) - (26 - shift));
            }
            else if (c == ' '){
                s += (char)(encryptionInitial.charAt(count));
            }
            else{
                s += (char)(encryptionInitial.charAt(count) + shift);
            }

        }
        System.out.println("Encryption complete :> " + s);


    }
if(encdec.equals(“E”)){
System.out.println(“请输入您想要使用的班次:>”;
int shift=in.nextInt();
System.out.println(“请输入您想要加密的消息:>”;
字符串encryptionInitial=in.next();
int len=encryptionInitial.length();
字符串s=“”;
对于(int count=0;count‘z’){
s+=(字符)(加密初始字符(计数)-(26移位));
}
else if(c==“”){
s+=(字符)(加密初始字符(计数));
}
否则{
s+=(字符)(加密初始字符(计数)+移位);
}
}
System.out.println(“加密完成:>”+s);
}

这是因为您没有正确阅读信息:当您打电话时

in.next()
您将输入读到下一个空格,然后删除其余的空格

您需要的是.nextLine()中的
,但有一个转折点:因为您只是在前面读了一个
int
,所以需要删除得到的第一行,保留第二行:

in.nextLine(); // drop
String encryptionInitial = in.nextLine();
也许更可靠的方法是调用
nextLine
,直到您得到一个非零长度的输入:

String encryptionInitial;
int len;
do {
     encryptionInitial = in.nextLine();
     len = encryptionInitial.length();
} while (len == 0);
即使用户在实际消息之前输入一行或多行空行,这也会起作用