我正在尝试实现一个基本方法,该方法接受一个字符串并将一个移位应用于单词alphabet。
我创建的方法工作得很好,但我也试图处理字空间。
截至目前,所有空格都以'#'输出。
static String encrypt(String message, int shift) {
StringBuilder s = new StringBuilder();
int length = message.length();
for(int k=0; k < length; k++) {
char c = (char)(message.charAt(k) + shift);
if (c == ' ') {
s.append(' ');
continue;
}
if(c > 'z') {
s.append((char)(message.charAt(k) - (26-shift)));
} else {
s.append((char)(message.charAt(k) + shift));
}
}
return s.toString();
}
我尝试添加一个基本的if语句:
if (c == ' ') {
s.append(' ');
}
System.out.println(encrypt("my word", 3));
输出: pb#zrug
但似乎没有用。有人可以告诉我,我失败了吗?
答案 0 :(得分:1)
你拥有所需的一切;把它们按正确的顺序放在一起:
for(char origChar : message.toCharArray()) {
if (origChar == ' ') {
s.append(' ');
continue;
}
// do other "encryption"
换句话说:任何不的字符都需要特殊处理 - 你检查它们第一次,然后你只是&#34;跳跃&#34;超出当前循环迭代;并继续输入您的下一个字符。
请注意,也不需要使用复杂的&#34;计数循环&#34;这里;因为您可以使用&#34; for-each&#34;轻松迭代输入中的字符。循环的风格。
答案 1 :(得分:0)
if (message.charAt(k) == ' ') {
s.append(' ');
continue;
}
在if语句中使用原始字符而不是计算字符。