有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

尝试编写凯撒密码程序时,我的加密方法有问题。[爪哇]

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

例如,假设我们要加密字符串“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也是一个字符数组

我将非常感激我能得到的任何和所有帮助

先谢谢你


共 (1) 个答案

  1. # 1 楼答案

    你可以稍微改变一下循环

     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];
     }
    

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

    希望能有帮助