Ход решения задачи по удалению дублей Java


Появилась задача:

Разработать графическое приложение, считывающее от пользователя произвольное количество чисел в массив и удаляющую дубликаты из массива. Значения массива должны считываться из текстового поля (JTextField), разделителем для чисел должен быть пробел. После нажатия на кнопку "Удалить дубликаты" во второе текстовое поле должен быть выведен набор чисел без дубликатов.

Ход решения

Здесь можно разделить задачу на две подзадачи: метод удаления дублей и графический интерфейс. Метод удаления дублей пусть будет public static int[] removeDuplicates(int[] array) – то есть на вход принимает массив целых чисел и на выходе выдает массив целых чисел но уже уникальных.

При реализации этого метода следует учесть случаи когда чисел нет и всего одно в массиве – тогда просто возвращаем этот же самый массив или int[0]. Если размер больше одного, то уникальное значение как минимум одно. Ну а если больше, то просто проходим по массиву и записываем в новый не повторяющиеся значения.

if(array.length == 1) return array;
    if(array.length == 0) return new int[0];
    //
    //Размер больше 1, уникальное значение как минимум одно
    int unique = 1;
    for(int i = 1; i < array.length; i++){
        if(array[i] != array[i - 1]){
            unique++; //Если текущий с предыдущим не равны - значит
                      // увеличиваем счетчик уникальных значений
        }
    }
Вторая подзадача – это графический интерфейс. Тут все стандартно.

//создаем окно с параметрами
JFrame frame = new JFrame();	
frame.setTitle("Удаление дублей из массива");
frame.setLocation(200, 200);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
//добавляем элементы на него
frame.getContentPane().setLayout(new FlowLayout());
textfield1 = new JTextField("4 9 9 8 1 4 7 11 11 5",20);
textfield2 = new JTextField("",20);
b = new JButton("Удалить дубликаты");
frame.getContentPane().add(textfield1);
frame.getContentPane().add(textfield2);
frame.getContentPane().add(b);
Дальше добавляем обработчик для кнопки и в него вставляем код, который:
  1. Получает значение из текстового поля
  2. Переводит его в массив String с разделителем «пробел»
  3. Этот массив переводит уже в массив int
  4. Отправляет массив int в метод removeDuplicates
  5. Полученный результат вставляет в другое поле
Следует также обработать исключения, как минимум исключение NumberFormatException – чтобы вводили только числа, буквы нам в массиве не нужны. В итоге получается вот что-то типа такого:

Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, java, задачи, массивы




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Учимся парсить сайты на C#: часть 1
Рекурсия папок с помощью C#
Рецензия на книгу Страуд Джонатан Трилогия Бартимеуса