gpt4 book ai didi

java - 环绕字符中的字符

转载 作者:行者123 更新时间:2023-12-01 11:03:02 25 4
gpt4 key购买 nike

我注意到我的程序中有一个小故障。它将解密除 a/b 和 c(不包括 d)之外的每个字符。这是因为它移位了 -4。很明显,它们是字母表中唯一循环的字符......我注意到 y = 121 '-' = 95 ( 121-95=26 ) 和 w = 119 ']' = 93 ( 119-93 =26),“x”= 120,“^”= 94(120-94=126)。

if (p.isLetter(element))
{
p = (char) (element + 5);
}
if(element > 'z' && Character.isLetter(element))
{
element = (char)(element - 26);
}
else if(Character.isLetter(element))
{ element = (char)(element+ 26);
}

最佳答案

问题是,如果您将字符移动到 a 到 z 的范围之外,则 isLetter() 将返回 false,因此应用移动后的两个测试将不会得到满足,因为该字符不再是字母。

像这样将 isLetter() 测试放在整个 block 周围,并将其从其他 if 中删除:

if (Character.isLetter(character))
{
character = (char) (character + shift);
if(character > 'z')
{
character = (char)(character - 26);
}
else if(character < 'a')
{
character = (char)(character + 26);
}
}

该函数仅处理小写字母,因此将检查从 isLetter() 更改为:

if((character >= 'a') && (character <= 'z'))

如果需要,大写字母可以单独处理。

关于java - 环绕字符中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33193256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com