Почему у меня выдает неправильное значение getText().length после setText?

201
10 декабря 2021, 06:10
class ButtonReadListener implements ActionListener {
         public void actionPerformed(ActionEvent e) {
             Incription IncObj = new Incription();
             try
             {
                 IncObj.messageDec = outputText.getText();
                 IncObj.len = utputText.getText().length();
             }catch (Exception ex)
             {
                 System.out.println("Error");
             }
             inputText.setText(IncObj.messageDec);
             outputText.setText(null);
         }
     }
     class ButtonWriteListener implements ActionListener {
         String message;
         public void actionPerformed(ActionEvent e) {
             Incription IncObj = new Incription();
             try {
                 message = inputText.getText();
                 IncObj.messageInc = message;
             }catch (Exception ex)
             {
                 System.out.println("Error");
             }
             outputText.setText(IncObj.messageInc);
             inputText.setText(null);
         }
public class Incription {
int  i, j, len; //a,b- ключи, i,j- счетчики, len- длина исходной строки
static int a;
static int b;
static String messageInc;
static String messageDec;
String sh1 = "abcdefghijklmnopqrstuvwxyz";
char[] sh = sh1.toCharArray();
String alfS;
char[] alf;
char[] shifr = new char[28];
char[] ich = new char[248];
char[] kod = new char[248];
      public void fIncript()
{
    String str = messageInc;
    len = str.legth();
    alfS = sh1; //посимвольная передача алфавита
    for(j = 0; j < 26; j++)
    {
        shifr[j] = alfS.toCharArray()[(b + a * (j)) % 26]; // формула по которой происходит шифрование
    }
    for (int i = 0; i < len; i++)
        ich[i] = str.toCharArray()[i];
    for (i = 0; i < len; i++)
    {
        for (j = 0; j < 26; j++)
        {
            if (ich[i] == alfS.toCharArray()[j])
            {
                kod[i] = shifr[j];
                j++;
            } //if
        } //for
    } //for
    String message;
    String shifrS = new String(kod);
    messageInc = shifrS;
}
public void fDecript()
{
    String str = messageDec;
    len = str.legth();
    alfS = sh1; //посимвольная передача алфавита
    for (int x = 0; x < 26; x++) // дешифровка: сборка шифр алфавита
        alf[x] = sh[x];
    for (int y = 0; y < 26; y++)
    {
        shifr[y] = alfS.toCharArray()[(b + a * (y)) % 26];
    }
    for (int i = 0; i < len; i++)
        ich[i] = str.toCharArray()[i];
    for (int x = 0; x < len; x++)
    {
        for (int y = 0; y < 26; y++)
        {
            if (ich[x] == shifr[y])
            {
                kod[x] = alf[y];
                y++;
            }
        }
    }
    String shifrS = new String(kod);
    messageDec = shifrS;
}

К примеру, setText "abc" выдает длину 248. Но когда ввожу вручную всё ок.

Answer 1

Вы правы, когда вы создаёте массив char[248] он по умолчанию заполняется символами с кодом 0 (\u0000). Поэтому с точки зрения строки, у вас имеется 248 пустых символов ("").

READ ALSO
Вывод values в Map в зависимости от ввода пользователя

Вывод values в Map в зависимости от ввода пользователя

Есть LinkedHashMap, вот часть для примера:

186
Не запускается mvn package

Не запускается mvn package

Всплывает такая ошибка: [ERROR] The goal you specified requires a project to execute but there is no POM in this directory (C:\Users\User)Please verify you invoked Maven from the correct directory

166
Простой вопрос по верстке по fontawesome

Простой вопрос по верстке по fontawesome

У меня есть гамбургер он выводится, все окfontawesome работает

82
Реализация функции с помощью алгоритма Стаи серых Волков

Реализация функции с помощью алгоритма Стаи серых Волков

Задавал вопрос по этому же примеру, но с реализацией по генетическому алгоритмуСейчас мне нужно реализовать этот же пример, только с помощью...

115