Попытка написать программу Caesar Cipher - у меня проблема с методом шифрования.[Джава] - PullRequest
0 голосов
/ 01 марта 2019

Итак, для школы я должен написать программу, которая реализует Цезарь Шифр.Я делал это, и все шло хорошо, однако сам метод шифрования не работает так, как я планировал.

Например, допустим, мы собираемся зашифровать строку "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 также является массивом символов

Я буду чрезвычайно признателен за любую помощь, которую смогу получить.

Спасибозаранее.

1 Ответ

0 голосов
/ 01 марта 2019

Вы можете немного изменить цикл

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

Мы всегда запускаем внешний цикл согласно номеру.символов в строке.Насколько я понял вопрос, вам нужно преобразовать символ, если он находится в вашем массиве символов, иначе вы хотите сохранить существующее значение в предыдущей строке.

Надеюсь, это поможет.

...