Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2016, 11:21   #1
mnmnm
Пользователь
 
Регистрация: 15.04.2016
Сообщений: 10
По умолчанию шифр цезаря

помогите пожалуйста
не воспринимает пробел,как исправить?

пример
Шифр Цезаря
Please enter the word to cipher:
JAck King
Encoded :MDfnNlqj
Decrypted :JAckKing

Код:
package mypkg;

    import java.io.*;

    public class Main {

    int offset=3;
  //Исключение ( метод потенциально может выбросить исключение с указанным типом)
    public String encrypt(String s) throws IOException
    {
        //подсчет длины строки
        //формула шифра, (шаг 3 буквы вперед)
        StringBuilder sb=new StringBuilder();
        for(int i=0;i<s.length();i++)
        {
            //также для заглавных букв
            char t=s.charAt(i);
            if(t>='A' && t<='Z')
            {
                int t1=t-'A'+offset;
                //
                t1=t1%26;
                sb.append((char)(t1+'A'));
            }
            //также для маленьких букв
            else if(t>='a' && t<='z')
            {
                int t1=t-'a'+offset;
                t1=t1%26;
                sb.append((char)(t1+'a'));
            }
        }
        return sb.toString();
    }


//аналогично (вместо +offset, вычитаем -offset) и расшифровываем

    public String decrypt(String s) throws IOException
    {
        StringBuilder sb=new StringBuilder();
        for(int i=0;i<s.length();i++)
        {
            char t=s.charAt(i);
            if(t>='A' && t<='Z')
            {
                int t1=t-'A'-offset;
                if(t1<0)t1=26+t1;
                sb.append((char)(t1+'A'));
            }
            else if(t>='a' && t<='z')
            {
                int t1=t-'a'-offset;
                if(t1<0)t1=26+t1;
                sb.append((char)(t1+'a'));
            }
        }
        return sb.toString();
    }


public static void main(String[] args) {
try
{
    System.out.println("Шифр Цезаря");
    BufferedReader b;
    String oriTxt,encTxt,decTxt;
    System.out.println("Please enter the word to cipher:");
    b=new BufferedReader(new InputStreamReader(System.in));
    oriTxt=b.readLine();
    Main c=new Main();
    encTxt=c.encrypt(oriTxt);
    System.out.println("Encoded :"+encTxt);
    decTxt=c.decrypt(encTxt);
    System.out.println("Decrypted :"+decTxt);
}
catch(Exception e)
{
    System.out.println(e.toString());
    }
    }
}
mnmnm вне форума Ответить с цитированием
Старый 26.04.2016, 11:29   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

просто добавьте веточку else, в которую попадут все не латинские символы:
Код:
      //также для маленьких букв
            else if(t>='a' && t<='z')
            {
                int t1=t-'a'+offset;
                t1=t1%26;
                sb.append((char)(t1+'a'));
            }
            else {
                sb.append(t);
            }
это надо сделать и в методе encrypt и в методе decrypt
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.04.2016, 11:47   #3
mnmnm
Пользователь
 
Регистрация: 15.04.2016
Сообщений: 10
По умолчанию

Спасибо
mnmnm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
шифр цезаря Lilen Паскаль, Turbo Pascal, PascalABC.NET 5 24.10.2015 05:07
Шифр Цезаря Maserati Паскаль, Turbo Pascal, PascalABC.NET 16 31.03.2015 16:35
Шифр цезаря microlab Паскаль, Turbo Pascal, PascalABC.NET 2 19.01.2014 18:41
Шифр Цезаря Goracio Помощь студентам 1 19.04.2010 14:53
Шифр Цезаря Jasper92 Помощь студентам 3 02.12.2009 18:47