Java 替换密码技术,每一个字母都被一个7个字母替换
我使用的是替换密码技术,每个字母都被一个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++) {
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