Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 试图编写凯撒密码程序-我的加密方法有问题。[爪哇]_Java_Caesar Cipher - Fatal编程技术网

Java 试图编写凯撒密码程序-我的加密方法有问题。[爪哇]

Java 试图编写凯撒密码程序-我的加密方法有问题。[爪哇],java,caesar-cipher,Java,Caesar Cipher,所以在学校我必须写一个程序来实现凯撒密码。我正在这样做,而且进展顺利,但是,加密方法本身并没有按照我的计划进行 例如,假设我们要加密字符串abc 它的意思是: abc 结果是: bbc 现在,我确切地知道是哪些代码行导致了这个问题。唯一的问题是我不知道如何修复它 这是我的密码: public static void encrypt(String toencrypt) { unencrypted = toencrypt.toLowerCase(); char[] sEn = u

所以在学校我必须写一个程序来实现凯撒密码。我正在这样做,而且进展顺利,但是,加密方法本身并没有按照我的计划进行

例如,假设我们要加密字符串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: ");
    }

}
如果您对方法中未明确说明的任何数据类型感到困惑,请参见:

字母表是一个字符数组 CIPHERBET也是一个字符数组 我将非常感激我能得到的任何和所有帮助


提前谢谢。

您可以稍微更改一下循环

 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];
 }
我们总是根据字符串中的字符数运行外部循环。 就我所理解的问题而言,如果字符在字符数组中,则需要转换该字符,否则需要保留上一个字符串的现有值


希望能有所帮助。

如果您没有预定义的字符集,则可以使用如下内容:@Lino这是一个非常具体的问题。我对此深表怀疑。此外,由于可能抄袭代码,我无法使用其他人的答案。