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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2018, 01:26   #1
ИвановБ
Пользователь
 
Регистрация: 19.12.2016
Сообщений: 70
По умолчанию Блок расшифровки не работает не расшифровывает текст. Как исправить?

Есть созданный мою интерфейс программы.

Код:
import javax.swing.*;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class ProgramScytale {

JTextArea tArea;
JTextArea tArea1;
JPanel p1;
JButton button0;
JButton button1;
JScrollPane scroll;
JScrollPane scroll1;

 String Message;
 String SPARTAMessage;
 int length;

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"));
    TActionListener actionListener = new TActionListener();
    button0.addActionListener(actionListener);
    button0.setBounds(10, 205, 195, 50);

    button1 =new JButton ("ДЕШИФРОВАТЬ");
    button1.setIcon(new ImageIcon("src\\images\\icon2.jpg"));
    TActionListener1 actionListener1 = new TActionListener1();
    button1.addActionListener(actionListener1);
    button1.setBounds(390, 205, 195, 50);

    scroll = new JScrollPane(tArea);
    scroll.setBounds(10, 265, 575, 100);
    scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS );

    tArea1 =new JTextArea();
    tArea1.setLineWrap(true);
    tArea1.setWrapStyleWord(true);
    tArea1.setEditable(false);

    scroll1 = new JScrollPane(tArea1);
    scroll1.setBounds(10, 10, 575, 150);
    scroll1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS );

    window.add(p1);
    p1.add(scroll);
    p1.add(button0);
    p1.add(button1);
    p1.add(scroll1);

    centeringFrame(600,400,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 event) {
         Message = tArea.getText();

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

public class TActionListener1 implements ActionListener {
     public void actionPerformed(ActionEvent e){

         SPARTAMessage= tArea.getText();

         int n =(((Integer) (length-1)/4)+1);
         char[] s = new char[SPARTAMessage.length()];
         int number =0;
         for(int i = 0; i < n;i++){
             for(int j = 0;j < 4; j++)
             {
                 s[i+n*j]= SPARTAMessage.charAt(number);
                 number++;
             }
         }
         for (int i = 0; i < s.length; i++) {
            Message+=s[i];
         };  

         tArea1.append(Message);
     }   
}     

public static void main(String[] args) {
    ProgramScytale pro = new ProgramScytale();
}
Блок расшифровки не работает не расшифровывает текст. Как исправить? Очень нужна помощь.

Код:
public class TActionListener1 implements ActionListener {
     public void actionPerformed(ActionEvent e){

         SPARTAMessage= tArea.getText();

         int n =(((Integer) (length-1)/4)+1);
         char[] s = new char[SPARTAMessage.length()];
         int number =0;
         for(int i = 0; i < n;i++){
             for(int j = 0;j < 4; j++)
             {
                 s[i+n*j]= SPARTAMessage.charAt(number);
                 number++;
             }
         }
         for (int i = 0; i < s.length; i++) {
            Message+=s[i];
         };  

         tArea1.append(Message);
     }   
}
ИвановБ вне форума Ответить с цитированием
Старый 22.10.2018, 08:16   #2
ultimatet41
Форумчанин
 
Аватар для ultimatet41
 
Регистрация: 08.04.2012
Сообщений: 104
По умолчанию

Я так понимаю что для шифрования используется "смещение вправо" на (n*j) если это так, то для дешифровки вам нужно выполнить обратную операцию "смещение влево" i-n*j
ultimatet41 вне форума Ответить с цитированием
Старый 22.10.2018, 15:14   #3
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от ultimatet41 Посмотреть сообщение
Я так понимаю что
Неправильно понимаете
Black Fregat вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает фильтр на JS. Как исправить? sice JavaScript, Ajax 2 14.11.2017 09:31
Не работает программа, как исправить? Паскаль Тетрадь Помощь студентам 9 31.05.2014 17:32
Не работает программа, как исправить? паскаль Тетрадь Помощь студентам 3 05.05.2014 15:41
Дата записана как текст - как програмно исправить? riko_ltd Microsoft Office Excel 1 26.11.2012 08:01
Исправить введенное как текст число SAndrus Microsoft Office Excel 3 11.11.2007 14:25