使用单词空格移动密码

时间:2017-02-14 09:45:45

标签: java

我正在尝试实现一个基本方法,该方法接受一个字符串并将一个移位应用于单词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

但似乎没有用。有人可以告诉我,我失败了吗?

2 个答案:

答案 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语句中使用原始字符而不是计算字符。