Вы читаете только одно слово с 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!