Шифр подстановки ключевых слов пользователя зацикливается на двух массивах разных размеров - PullRequest
0 голосов
/ 14 ноября 2018

Программирование в течение 4 недель идет легко для меня ...

Цель: Мне нужно ввести пользовательское "ключевое слово" и использовать это ключевое слово в алфавитном шифре.

Пример: Пользователь предоставляет ключевое слово "SALT".

Шифр: SALTBCDEFGHIJKMNOPQRUVWXYZ.(ключевое слово + оставшиеся буквы алфавита)

Я превратил свое строковое ключевое слово в массив символов, и у меня есть массив алфавитов.Я хотел, чтобы код зацикливался на обоих массивах, и если буквы алфавита не было (равно) буквам ключевых слов, то он добавлял их в конец ключевого слова.

Проблемы - я получаю исключение ArrayOutOfBoundsException - что, по моему мнению, связано с тем, что оба моих массива имеют разные размеры?Не уверен, как это исправить.Также мне нужно будет создать третий массив для хранения ключевого слова + оставшихся букв алфавита, поскольку массивы не могут изменить размер?Я могу использовать только Массивы (списки, Hashsets и т. Д., Поскольку я их еще не изучил).Спасибо за любую помощь ..

    char[] arr = keyWord.toCharArray();
    for (char c:arr) {
        System.out.println(c); //printing to see if it worked   
    }

    char [] alphabet = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
            'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
            'V', 'W', 'X', 'Y', 'Z'
            };

    System.out.println(alphabet);

    boolean flag = false;
    for (int i = 0; i <alphabet.length; i++) {
        for (int j = 0; j <keyWord.length(); j++) {

            if (alphabet[j] != arr[i]) 
            //if alpha letter is not equal to keyword letters
            flag = false;
            break;
            }
            if (flag)
            //(false) just trying to print anything so
            // i can see whats happening..
                System.out.println(alphabet[i]);

    }
}

}

1 Ответ

0 голосов
/ 14 ноября 2018

Существуют некоторые проблемы с именами переменных, которые вас смущают. Замените keyWord на arr в регуляторе диапазона петли, поскольку вы используете arr сейчас. Затем вы можете видеть, что arr должен быть проиндексирован как j, а не i.

for (int i = 0; i <alphabet.length; i++) {
    for (int j = 0; j <arr.length(); j++) { //---------> notice me

        if (alphabet[i] != arr[j])  //---------> notice me, too
            //if alpha letter is not equal to keyword letters
            flag = false;
            break;
    }
    if (flag)
    //(false) just trying to print anything so
    // i can see whats happening..
    System.out.println(alphabet[i]);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...