![]() |
|
![]() ![]() ![]() |
|
Qawra |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 188 Регистрация: 6.3.2007 Репутация: нет Всего: 4 |
Написала " своими словами " простенький алгоритм для шифрования .
Правда он на любом input даёт один и тот же output . Посмотрите пожайлуста "свежим взглядом " в чём проблема :
|
|||
|
||||
Reaver |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 28.12.2006 Репутация: нет Всего: нет |
Первое что бросается в глаза, эта строка:
Правильно написать
Метод String.toUpperCase() возвращает новую строку с преобразованным регистром, а не изменяет исходную. Только после этого изменения программа начинает вылетать с ошибкой. Да и решение слишком усложнено, вот так гораздо лучше, правда не учтена обработка пробелов:
Это сообщение отредактировал(а) Reaver - 24.12.2009, 09:18 |
||||||
|
|||||||
Qawra |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 188 Регистрация: 6.3.2007 Репутация: нет Всего: 4 |
Спасибо !
Я попыталась пристроить удаление пробелов вместо Exception используя continue label . Но пока ничего не удаляется
Это сообщение отредактировал(а) Qawra - 24.12.2009, 12:58 |
|||
|
||||
Reaver |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 28.12.2006 Репутация: нет Всего: нет |
В данном случае можно добавить пробел в алфавит, либо просто пропускать символы, не входящие в алфавит:
|
|||
|
||||
Qawra |
|
||||||||||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 188 Регистрация: 6.3.2007 Репутация: нет Всего: 4 |
Я вынесла эту операцию в отдельный метод что бы не мучиться ,
буду вызывать её из enciphing и deciphing методов. Я думаю что для того что-бы расшифровать то что мы зашифровали нам надо просто поменять + на - в строчке
Или этого недостаточно ? Что-то я упустила в шифровании ..Компелируется , но результат выдаёт не тот который должен быть
на строчку
выдаёт "TDDDDDDDDDDDDDDD" это он даже не заикается ... это он только первую букву правильно шифрует ![]() trimString работает правильно , все пробелы удаляет Я попробовала написать simple substitution алгоритм
Он у меня получился каким-то подозрительно простым , И строчка
Говорит что не может найти метод indexOf key для этого алгоритма я запрашиваю у пользователя как string , затем буквы из него (без повторов) переписываю в keyArray и добиваю его до размера английского алфавита с помощью этого самого алфавита Смотрится правда достаточно запутано :
не знаю будет ли работать потому что строчка
в самом алгоритме пока не скомпелировалась по непонятной причине Это сообщение отредактировал(а) Qawra - 24.12.2009, 18:53 |
||||||||||||||
|
|||||||||||||||
Reaver |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 28.12.2006 Репутация: нет Всего: нет |
В принципе, все правильно, но функцию дешифрования переписывать не надо. Можно просто написать таким образом:
Во вторых, Вы повторяете те же самые ошибки, что и в начале. Метод trim() возвращает новую строку, а не изменяет старую, то же самое и с вашим методом trimString(String input). Так же, метод trim() удаляет пробелы только из начала и конца строки. Для удаления всех пробелов не обязательно писать свою функцию, можно воспользоваться функцией String.replaceAll(" ", "");
Первый мой пример компилировался без проблем? Если нет, то какую версию jdk Вы используете? Во втором примере я немного ошибся. Вот готовый вариант кода, который просто пропускает символы. неиспользуемые в алфавите:
|
||||||
|
|||||||
Qawra |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 188 Регистрация: 6.3.2007 Репутация: нет Всего: 4 |
Ошибку с trim() и trimString(String input) я исправила .
NetBeans 6.7.1 у меня установлен , но я в нём только начинающий пока программист ![]() Могу что-нибудь перепутать . Здесь выделена эта строчка, в первом классе она скомпелировалась без проблем
|
|||
|
||||
Reaver |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 28.12.2006 Репутация: нет Всего: нет |
У вас переменная alphabet имеет тип char[], а обращаетесь к ней как к типу String.
|
|||
|
||||
Qawra |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 188 Регистрация: 6.3.2007 Репутация: нет Всего: 4 |
Да , так оно и оказалось .Я уже переделала её в String
![]() Делаю сейчас setKey для шифрования с субституцией . Удаляются из String пробелы и дубликаты букв . То что остаётся становиться началом нового алфавита размером в 26 букв. Пустые места заполняются английским алфавитом начиная с буквы A.
Непонятно почему после удаления пробелов и дубликатов буквы оказываются в алфавитном порядке . А вместо английского алфавита впечатывается буква Z . Например :
печатает EMNORTUVZ Мне кажется что inner loops надо переставить местами чтобы английский алфавит допечатывать в key. Ну а порядок букв видимо результат использования TreeSet ...? Это сообщение отредактировал(а) Qawra - 24.12.2009, 23:14 |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |