所以对于学校,我必须编写一个实现Caesar Cipher的程序。我正在执行此操作,并且运行良好,但是,加密方法本身无法解决我的计划。
例如,假设我们要对字符串“ abc”
进行加密它作为:
abc
结果为:
bbc
现在,我确切地知道哪些代码行导致了此问题。唯一的问题是我不完全知道如何解决它。
这是我的代码:
public static void encrypt(String toencrypt)
{
unencrypted = toencrypt.toLowerCase();
char[] sEn = unencrypted.toCharArray();
char[] enEd = new char[sEn.length];
if(toencrypt.length() > 0)
{
for(int i = 0; i < ALPHABET.length; i++)
{
for(int j = 0; j < sEn.length; j++)
{
if(sEn[j] == ALPHABET[i])
{
sEn[j] = CIPHERBET[i];
}
//Below is the 'if' statement causing the issue
if(enEd[j] == 0)
{
enEd[j] = sEn[j];
}
}
}
String bts = new String(enEd);
encrypted = bts;
System.out.println("The encrypted message is: " + encrypted);
}
else
{
System.out.println("Please enter a string: ");
}
}
如果您对方法中未明确说明的任何数据类型感到困惑,则为:
我将非常感谢我能收到的任何帮助。
谢谢。
答案 0 :(得分:0)
您可以稍微改变循环
for(int i = 0; i < sEn.length; i++)
{
flag=0;
for(int j = 0; j < ALPHABET.length; j++)
{
if(sEn[i] == ALPHABET[j])
{
enEn[i]=CIPHERBET[j];
flag=1;
break;
}
}
if(flag==0)
enEn[i]=sEn[i];
}
我们总是按照编号运行外循环。字符串中的字符。 据我了解的问题,如果字符数组中存在该字符,则需要转换该字符,否则您希望保留现有值,直到上一个字符串为止。
希望有帮助。