Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
4 / 1 / 0
Регистрация: 14.02.2017
Сообщений: 125

Шифр перестановки Скитала

17.10.2018, 12:50. Показов 1796. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ помогите создал интерфейс к данной программе, нужно что бы при нажатии на кнопку "зашифровать"
исходный текст брался из JTextArea и уже зашифрованный код передавался в JList. Слушатель повесил на кнопку, но не получается сделать чтобы текст читался из JTextArea и зашифрованный отображался в JList.

Да и еще нужно что бы программка еще и уже зашифрованный текст расшифровывала. Кто сможет помочь или совет дать?

Мой интерфейс.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
// Подключение библиотек, необходимых для создания окна и определения размеров экрана пользователя
 
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
public class ProgramScytale {
 
    JTextArea tArea;
    JList list;
    JPanel p1;
    JButton button0;
    JButton button1;
    JScrollPane scroll;
    JScrollPane scroll1;
    
    ProgramScytale(){
        
        JFrame window = new JFrame ("Шифр древней спарты");     
        p1 =new JPanel(null);
        
        tArea = new JTextArea();
        tArea.setLineWrap(true);
        tArea.setWrapStyleWord(true);
        tArea.setFont(new Font("Dialog", Font.BOLD, 15));
        
        button0 =new JButton ("ЗАШИФРОВАТЬ");
        button0.setIcon(new ImageIcon("src\\images\\icon1.jpg"));
        ActionListener actionListener = new TActionListener();
        button0.addActionListener(actionListener);
        button0.setBounds(10, 305, 195, 50);
        
        button1 =new JButton ("ДЕШИФРОВАТЬ");
        button1.setIcon(new ImageIcon("src\\images\\icon2.jpg"));
        button1.setBounds(390, 305, 195, 50);
        
        scroll = new JScrollPane(tArea);
        scroll.setBounds(10, 365, 575, 100);
        scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS );
 
        list =new JList();
        
        scroll1 = new JScrollPane(list);
        scroll1.setBounds(10, 225, 575, 70);
        scroll1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS );
        
        window.add(p1);
        p1.add(scroll);
        p1.add(button0);
        p1.add(button1);
        p1.add(scroll1);
        
        centeringFrame(600,500,window);                         // Вызываем метод центрирования для созданного окна
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  // Завершаем программу при закрытии окна
        window.setVisible(true);                                // Делаем окно видимым
        window.setResizable(false);
        
    }
    
    private static void centeringFrame (int sizeWidth, int sizeHeight, JFrame frame){  // Метод  принимает размеры окна (ширину и высоту), а также его название
        Dimension s = Toolkit.getDefaultToolkit().getScreenSize();
        int X = (s.width - sizeWidth) / 2;
        int Y = (s.height - sizeHeight) / 2;
        frame.setBounds(X, Y, sizeWidth, sizeHeight);
    }   
    
    public class TActionListener implements ActionListener {
         public void actionPerformed(ActionEvent e) {
             
         }
    }
    
    public static void main(String[] args) {
        ProgramScytale pro = new ProgramScytale();
    }
}
И отдельно программка.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class Cyber {
 
    public static void main(String[] args) {
        String skiTest = "Это шрифт древней Спарты";
        int cols = 0, count = 0;
        char[] skiTestArr = skiTest.replaceAll(" ", "").toCharArray();
        char[] resultArr = new char[skiTest.length()];
 
        for (int i = 1; i < skiTest.length(); i++) {
            if (skiTest.length() / i == 4) {
                cols = i;
                break;
            }
        }
        for (int i = 0; i < cols; i++) {
            int plus = i;
            for (int j = 0; j < 4; j++) {
                resultArr[count++] += skiTestArr[plus];
                plus += cols;
            }
        }
        for (char aResultArr : resultArr) {
            System.out.print(aResultArr);
        }
        System.out.println();
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.10.2018, 12:50
Ответы с готовыми решениями:

Шифр перестановки "Скитала"
Привет всем) помогите пожалуйста написать шифр перестановки &quot;Скитала&quot;, с дешифровкой)

Шифр Виженера, шифр Скитала
Я много прочитал информации и захотел реализовать эти шифры на Buider C++, а вот как это сделать. Кому интересно, напишите мне примеры этих...

Шифр Скитала
Народ помогите с программкой. Вот прога которая шифрует и расшифровывает текст. public class SPARTA { static String...

8
4 / 1 / 0
Регистрация: 14.02.2017
Сообщений: 125
18.10.2018, 14:30  [ТС]
Ну что никто не может помочь ???

Добавлено через 36 минут
Может быть не понятно поставил вопрос тогда спрошу так как вывести массив
Java
1
char[] resultArr = new char[skiTest.length()];
в JTextArea

и как считывать текст из JTextArea1 в массив
Java
1
char[] skiTestArr = skiTest.replaceAll(" ", "").toCharArray();
Добавлено через 11 минут
///
0
296 / 149 / 67
Регистрация: 22.02.2017
Сообщений: 592
18.10.2018, 16:18
Преобразуйте массив в строку
Java
1
System.out.println(Arrays.toString(array));
строку в массив через split
0
4 / 1 / 0
Регистрация: 14.02.2017
Сообщений: 125
19.10.2018, 01:11  [ТС]
Nidl, Дык я все это время и пытался преобразовать массив в строку. Вот мне надо что бы по нажатию на кнопку вот обработчик
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class TActionListener implements ActionListener {
         public void actionPerformed(ActionEvent e) {
             for (int i = 1; i < skiTest.length(); i++) {
                 if (skiTest.length() / i == 4) {
                     cols = i;
                     break;
                 }
             }
             for (int i = 0; i < cols; i++) {
                 int plus = i;
                 for (int j = 0; j < 4; j++) {
                     resultArr[count++] += skiTestArr[plus];
                     plus += cols;
                 }
             }
             
         }
как я понимания строка читалась из JTextArea преобразовывалась в массив
Java
1
char[] skiTestArr = сама строка.replaceAll(" ", "").toCharArray();
а на выходе результат
Java
1
char[] resultArr = new char[сама строка.length()];
записывался в JTextArea1. И я так понял char массив тоже надо преобразовывать в строку. Только у меня ничего не выходит, ну к гадалки не ходи вина явна моя либо я чего-то не догоняю либо что-то не так пишу.

Добавлено через 29 минут
Так вывести в JTextArea1 я смог вот таким путем
Java
1
2
String str = new String(resultArr);
             tArea1.append(str);
Раньше пробовал похожий вариант не работал щас такой заработал.

И так же решил способ ввода
Java
1
String skiText = tArea.getText();
Оказывается я жестко тупил и решение элементарное, даже стыдно стало.

Добавлено через 35 минут
Nidl, Не подскажите как обновлять JTextArea каждый раз когда добавляется новый текст?
0
296 / 149 / 67
Регистрация: 22.02.2017
Сообщений: 592
19.10.2018, 08:58
ну я всегда так делаю )

Java
1
ta.setText("fish" + ta.getText());
0
4 / 1 / 0
Регистрация: 14.02.2017
Сообщений: 125
19.10.2018, 14:06  [ТС]
Nidl, У меня почему то не работает новый текст добавляется слева от старого
Java
1
tArea1.setText(str + tArea1.getText());
0
296 / 149 / 67
Регистрация: 22.02.2017
Сообщений: 592
19.10.2018, 14:27
что бы ввести новое значение достаточно задать setText заново
Java
1
tArea1.setText("cat");
что бы сохранить старое значение и добавить новое
Java
1
2
tArea1.setText(str + tArea1.getText());
tArea1.setText(tArea1.getText() + str);
0
4 / 1 / 0
Регистрация: 14.02.2017
Сообщений: 125
19.10.2018, 15:55  [ТС]
Nidl, Не подскажите как исправить ошибку указывающую на e в коде
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class TActionListener implements ActionListener {
         public void actionPerformed(ActionEvent e) {
                            
             String Message = tArea.getText();
             String SPARTAMessage;
             int length;
                         
             length = Message.length();
             int n =(((Integer) (length-1)/4)+1);
             String s = new String();
             for(int i = 0;i <n; i++){
                 for(int j = 0;j < 4; j++)
                 {
                     try{
                         s+=Message.charAt(i+n*j);
                     }catch(IndexOutOfBoundsException e){
                         s+=" ";
                     }
                 }
             }
             SPARTAMessage = s;
             
             tArea1.append(SPARTAMessage);
         }
строчка 16.
0
4 / 1 / 0
Регистрация: 14.02.2017
Сообщений: 125
20.10.2018, 17:27  [ТС]
Эту проблему решил.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.10.2018, 17:27
Помогаю со студенческими работами здесь

Шифр Скитала
Помогите, пожалуйста, написать шифр Скитала на Си.

Шифр Сцитала (Скитала)
Помогите найти ошибку. За ранее спасибо! #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; void main() ...

Спартанский шифр(Скитала)
добрый вечер) взялся организовать спартанский шифр) затея удалась) основной класс отвечающий за кодировку package shifr; ...

Шифр Вижинера или Скитала
нужно на дельфи шифр вижинера помогите?

Реализовать шифр "скитала"
Здравствуйте. Пожалуйста подскажите как реализовать шифр &quot;скитала&quot; на с#. Очень нужно. Veronika3117, одна тема - один вопрос


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru