Java 替换密码技术,每一个字母都被一个7个字母替换

Java 替换密码技术,每一个字母都被一个7个字母替换,java,Java,我使用的是替换密码技术,每个字母都被一个7个字母替换,如果输入的单词之间出现空格,那么它也必须出现在输出中 class Cipher { public static StringBuffer encrypt(String text, int s) { StringBuffer result= new StringBuffer(); for (int i=0; i<text.length(); i++) {

我使用的是替换密码技术,每个字母都被一个7个字母替换,如果输入的单词之间出现空格,那么它也必须出现在输出中

class Cipher 
{ 
    public static StringBuffer encrypt(String text, int s) 
    { 
        StringBuffer result= new StringBuffer(); 
        for (int i=0; i<text.length(); i++) 
        { 
            if (Character.isUpperCase(text.charAt(i))) 
            { 
                char ch = (char)(((int)text.charAt(i)+s));
                result.append(ch); 
            } 
            else
            { 
                char ch = (char)(((int)text.charAt(i)+s)); 
                result.append(ch); 
            } 
        } 
        return result; 
    } 
    public static void main(String[] args) 
    { 
        String text = "zhcl dhaly"; 
        int s = -7; 
        System.out.println("Text : " + text); 
        System.out.println("Cipher: " + encrypt(text, s)); 
    } 
} 
类密码
{ 
公共静态StringBuffer加密(字符串文本,int s)
{ 
StringBuffer结果=新的StringBuffer();

对于(int i=0;i我假设您正在抱怨
sa\e]aZer
,或者更准确地说:那里没有空间,这不是您的任务所影响的

问题是:

 if (Character.isUpperCase(text.charAt(i))) 
它只检查字符是否为大写,不检查字符是否为空格

这很简单:您需要一个if语句,它说:
if-space,然后追加space-else“translate”

还要注意:当前代码中的if语句是毫无意义的。当您仔细查看“then”和“else”的情况时,您会发现它们是相同的

因此,长话短说:仔细看看您需要什么样的if语句,并相应地更改代码。仔细研究表以更好地了解输入字符的输出类型可能对您非常有帮助


除此之外:你应该了解解密和加密之间的区别!当你试图取回原始文本时,你必须反转操作!当你减去7进行加密时,你需要添加7进行解密。你不能使用加密方法对加密字进行解密

尝试使用模来环绕任何字符,当移动时,这些字符将超过字母
z

StringBuilder result = new StringBuilder();
int s = 7;
String text = "Zhcldhaly";
for (int i=0; i < text.length(); i++) {
    char chr = text.charAt(i);
    if (chr == ' ') {
        result.append(" ");
    }
    else if (Character.isUpperCase(chr)) {
        char ch = (char)('A' + (chr - 'A' - s + 26) % 26);
        result.append(ch);
    }
    else {
        char ch = (char)('a' + (chr - 'a' - s + 26) % 26);
        result.append(ch);
    }
}

System.out.println(result);

您的代码工作正常。但我正在尝试用字母线下的7个字母替换每个字母。@Harini然后在我上面的脚本中设置
s=7
。如果我设置7,它会将字母前面打印为7。但我希望字母表下的7个字母。请注意:我看到您增强了您的问题。因此我在回答中这样做了。但请注意,您应该我不会重复更改内容。如果你问了一个问题,你就会接受有用的答案。如果你还有其他问题,你应该问一个新问题!除此之外,你的问题仍然不清楚(请阅读)。我希望能就我的答案提供一些反馈。
Savewater