О разработке Java-программ для работы с массивами в NetBeans

№83-1,

технические науки

В статье рассматривается процесс реализации оконных и консольных Java-программ для работы с массивами в NetBeans.

Похожие материалы

В настоящее время умение писать Java-программы [1] является очень актуальным и востребованным [2]. При этом предпочтительно использование различных сред разработки, например, NetBeans, существенно ускоряющих процесс написания программ, их отладку и верификацию [3].

Рассмотрим процесс реализации оконных и консольных Java-программ для работы с массивами данных в среде NetBeans при решении следующих типовых задач:

1. Дан одномерный массив целых чисел, состоящий из 8-ми элементов, заполнить его с клавиатуры.

Требуется:

  • найти сумму отрицательных элементов, кратных числу k, а также количество чисел, равных k (k вводить с клавиатуры);
  • найти номер первого четного элемента массива, значение которого не превышает k, если таковой имеется;
  • заменить элементы, значения которых лежат в числовом диапазоне [5; 9], нулями.

Java-код решения задачи для запуска на консоли имеет вид:

System.out.println("Введите массив:");int[] mas = new int[8];Scanner scan = new Scanner(System.in);for (int i = 0; i < 8; i++) {   System.out.print("mas[" + (i+1) + "] = ");   mas[i] = scan.nextInt();}int sum = 0, kol = 0, num = -1, k;System.out.println("Введите k: ");k = (new Scanner(System.in)).nextInt();for (int i = 0; i < 8; i++) {   if ((mas[i] < 0) && (Math.abs(mas[i]) % k == 0)) {     sum += mas[i];   }   if (mas[i] == k) {     kol++;   }   if ((num == -1) && (mas[i] % 2 == 0) && (mas[i] != 0) && (mas[i] <= k)) {     num = i;   }   if ((mas[i] >= 5) && (mas[i] <= 9)) {     mas[i] = 0;   }}num++;System.out.println("Сумма: " + sum);System.out.println("Количество: " + kol);System.out.println("Номер: " + num);System.out.println("Новый массив:");for (int i = 0; i < 8; i++) {    System.out.print(mas[i] + "\t");}

2. Дан двумерный массив A размером 4 × 4, заполненный целыми числами.

Требуется сформировать одномерный массив B, каждый элемент которого равен округленному среднему значению соответствующей строки массива A.

Java-код решения задачи для запуска на консоли имеет вид:

int m1[][] = new int[4][4];int m2[] = new int[4];System.out.println("Массив A:");for (int i = 0; i < 4; i++) {   double sr = 0;   for (int j = 0; j < 4; j++) {     m1[i][j] = (int) (Math.random()*10);     if (j < 3){       System.out.print(m1[i][j] + "\t");     } else{       System.out.println(m1[i][j]);     }     sr += m1[i][j];   }   m2[i] = (int) Math.round(sr/4);}System.out.println("Массив B:");for (int i = 0; i < 4; i++) {   if (i < 3){     System.out.print(m2[i] + "\t");   } else{     System.out.println(m2[i]);   }}

В коде управляющий символ \t предназначен для вставки символов табуляции между элементами массива.

3. Дан двумерный массив размером n × m, заполненный случайными числами в промежутке [-4; 10).

Требуется определить, существует ли в массиве строка, содержащая только положительные элементы.

Java-код решения задачи для запуска на консоли имеет вид:

boolean o = false;Scanner scan = new Scanner(System.in);System.out.print("Введите n: ");int n = scan.nextInt();System.out.print("Введите m: ");int m = scan.nextInt();int m1[][] = new int[n][m];for (int i = 0; i < n; i++) {   boolean b = true;   for (int j = 0; j < m; j++) {     m1[i][j] = (int)(Math.random()*14 — 4);     if (j < m — 1){       System.out.print(m1[i][j] + "\t");     } else{       System.out.println(m1[i][j]);     }     if (m1[i][j] <= 0) {       b = false;     }           }   if (b) {     o = true;   }}if (o) {   System.out.println("Ответ: да.");} else {   System.out.println("Ответ: нет.");}

Для реализации оконного Java-приложения, реализующего решение указанных выше заданий, в NetBeans, помимо стандартных компонентов для ввода/вывода данных, таких как JLabel и JTextField, используется компонент JTable для работы с таблицами, а также кнопки JButton, предназначенные для выполнения расчетов.

Компоненты желательно группировать, исходя из их принадлежности к тому или иному заданию, используя для этого компоненты JTabbedPane и JPanel.

Компонент jPanel1 содержит следующие компоненты:

  1. jTextField1 — текстовое поле, используемое для ввода числа k;
  2. jTextField2, jTextField3 и jTextField4 — текстовые поля, предназначенные для вывода результатов расчетов;
  3. jLabel1, …, jLabel4 — надписи, используемые для идентификации текстовых полей;
  4. jTable1 — таблица, в которую вводится исходный массив;
  5. jTable2 — таблица, в которую выводится измененный массив.

Компонент jPanel2 содержит следующие компоненты:

  1. jTextField5, jTextField6 — текстовые поля, предназначенные для ввода значений n и m соответственно;
  2. jLabel5 и jLabel6 — надписи, используемые для идентификации текстовых полей;
  3. jTable3 — таблица, в которую вводится исходный массив;
  4. jTable4 — таблица, в которую выводится новый массив;
  5. jLabel7 — надпись, в которую будет записываться ответ на вопрос задания;
  6. jButton4 — кнопка, которая генерирует новый двумерный массив, согласно значениям n и m.

Все таблицы форм настроены нужным образом в редакторе моделей таблиц. В заголовке формы содержится название работы.

Оконные формы разработанного приложения изображены на рис. 1 и 2, из которых следует, что решение задания №1 реализовано на одной панели (вкладке), а решения заданий №2 и №3 — на другой.

Оконная форма задачи №1
Рисунок 1. Оконная форма задачи №1
Оконная форма задач №2 и №3
Рисунок 2. Оконная форма задач №2 и №3

Методы для обработки событий mouseClicked, по сути, повторяют аналогичные методы программы, разработанной для консоли. Так, метод обработки события mouseClicked для кнопки jButton1, где реализовано решение задания №1, имеет вид:

int[] mas = new int[8];for (int i = 0; i < 8; i++) {      mas[i] = Integer.parseInt(jTable1.getValueAt(0, i).toString());}int sum = 0, kol = 0, num = -1;for (int i = 0; i < 8; i++) {   if ((mas[i] < 0) && (Math.abs(mas[i]) % 4 == 0)) {     sum += mas[i];   }   if (mas[i] == Integer.parseInt(jTextField1.getText())) {     kol++;   }   if ((num == -1) && (mas[i] % 2 == 0) && (mas[i] != 0) && (mas[i] <= Integer.parseInt(jTextField1.getText()))) {     num = i;   }   if ((mas[i] >= 5) && (mas[i] <= 9)) {     mas[i] = 0;   }}jTextField2.setText(String.valueOf(sum));jTextField3.setText(String.valueOf(kol));jTextField4.setText(String.valueOf(++num));for (int i = 0; i < 8; i++) {    jTable2.setValueAt(mas[i], 0, i);}

При необходимости можно заполнить таблицу jTable1 случайными значениями в момент запуска приложения, используя для этого событие windowOpened.

На рис. 3 показано окно приложения в момент работы с ним.

Приложение в процессе работы
Рисунок 3. Приложение в процессе работы

Список литературы

  1. Антипин А.Ф. Организация эффективной работы преподавателей в условиях рейтинговой системы обучения // Прикладная информатика. 2014. № 3. С. 48-59.
  2. Степашина Е.В. Оптимизация финансовых показателей предприятия на основе нейросетевой модели // Информационные системы и технологии. 2014. № 5. С. 34-42.
  3. Седова Н.А., Седов В.А. Методы оценки качества полученных решений // Южно-Сибирский научный вестник. 2012. № 1. С. 88–91.