试图写一个Caesar Cipher程序 - 我遇到了加密方法的问题。 【JAVA]

问题描述 投票:-2回答:1

所以对于学校我必须编写一个实现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: ");
    }

}

如果您对方法中未明确说明的任何数据类型感到困惑,这里它们是:

  • ALPHABET是一个字符数组
  • CIPHERBET也是一个字符数组

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

先感谢您。

java caesar-cipher
1个回答
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];
 }

我们总是按照no来运行外循环。字符串中的字符。至于我已经理解了你需要转换字符的问题,如果它在你的字符数组中,你想要保留前一个字符串的现有值。

希望能帮助到你。

© www.soinside.com 2019 - 2024. All rights reserved.