我正在尝试使用多个密码在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);
}
答案 0 :(得分:1)
这是因为您正在正确阅读邮件:致电时
in.next()
您将输入读到下一个空格,然后删除其余空格。
你需要的是in.nextLine()
,但有一个转折点:因为你刚刚读过它之前的int
,你需要删除第一行,并保留第二行:
in.nextLine(); // drop
String encryptionInitial = in.nextLine();
也许更强大的方法是调用nextLine
,直到得到非零长度的输入:
String encryptionInitial;
int len;
do {
encryptionInitial = in.nextLine();
len = encryptionInitial.length();
} while (len == 0);
即使用户在实际消息之前输入一个或多个空行,这也会起作用。