В настоящее время умение писать 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; iSystem.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; iif ((mas[i]sum += mas[i];}if (mas[i] == k) {kol++;}if ((num == -1) && (mas[i] % 2 == 0) && (mas[i] != 0) && (mas[i]num = i;}if ((mas[i] >= 5) && (mas[i]mas[i] = 0;}}num++;System.out.println("Сумма: " + sum);System.out.println("Количество: " + kol);System.out.println("Номер: " + num);System.out.println("Новый массив:");for (int i = 0; iSystem.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; idouble sr = 0;for (int j = 0; jm1[i][j] = (int) (Math.random()*10);if (jSystem.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; iif (iSystem.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; iboolean b = true;for (int j = 0; jm1[i][j] = (int)(Math.random()*14 — 4);if (jSystem.out.print(m1[i][j] + "\t");} else{System.out.println(m1[i][j]);}if (m1[i][j]b = false;}}if (b) {o = true;}}if (o) {System.out.println("Ответ: да.");} else {System.out.println("Ответ: нет.");}
Для реализации оконного Java-приложения, реализующего решение указанных выше заданий, в NetBeans, помимо стандартных компонентов для ввода/вывода данных, таких как JLabel и JTextField, используется компонент JTable для работы с таблицами, а также кнопки JButton, предназначенные для выполнения расчетов.
Компоненты желательно группировать, исходя из их принадлежности к тому или иному заданию, используя для этого компоненты JTabbedPane и JPanel.
Компонент jPanel1 содержит следующие компоненты:
- jTextField1 — текстовое поле, используемое для ввода числа k;
- jTextField2, jTextField3 и jTextField4 — текстовые поля, предназначенные для вывода результатов расчетов;
- jLabel1, …, jLabel4 — надписи, используемые для идентификации текстовых полей;
- jTable1 — таблица, в которую вводится исходный массив;
- jTable2 — таблица, в которую выводится измененный массив.
Компонент jPanel2 содержит следующие компоненты:
- jTextField5, jTextField6 — текстовые поля, предназначенные для ввода значений n и m соответственно;
- jLabel5 и jLabel6 — надписи, используемые для идентификации текстовых полей;
- jTable3 — таблица, в которую вводится исходный массив;
- jTable4 — таблица, в которую выводится новый массив;
- jLabel7 — надпись, в которую будет записываться ответ на вопрос задания;
- jButton4 — кнопка, которая генерирует новый двумерный массив, согласно значениям n и m.
Все таблицы форм настроены нужным образом в редакторе моделей таблиц. В заголовке формы содержится название работы.
Оконные формы разработанного приложения изображены на рис. 1 и 2, из которых следует, что решение задания №1 реализовано на одной панели (вкладке), а решения заданий №2 и №3 — на другой.


Методы для обработки событий mouseClicked, по сути, повторяют аналогичные методы программы, разработанной для консоли. Так, метод обработки события mouseClicked для кнопки jButton1, где реализовано решение задания №1, имеет вид:
int[] mas = new int[8];for (int i = 0; imas[i] = Integer.parseInt(jTable1.getValueAt(0, i).toString());}int sum = 0, kol = 0, num = -1;for (int i = 0; iif ((mas[i]sum += mas[i];}if (mas[i] == Integer.parseInt(jTextField1.getText())) {kol++;}if ((num == -1) && (mas[i] % 2 == 0) && (mas[i] != 0) && (mas[i]num = i;}if ((mas[i] >= 5) && (mas[i]mas[i] = 0;}}jTextField2.setText(String.valueOf(sum));jTextField3.setText(String.valueOf(kol));jTextField4.setText(String.valueOf(++num));for (int i = 0; ijTable2.setValueAt(mas[i], 0, i);}
При необходимости можно заполнить таблицу jTable1 случайными значениями в момент запуска приложения, используя для этого событие windowOpened.
На рис. 3 показано окно приложения в момент работы с ним.
