Итак, давайте протестируем ПО. Как известно программа работает на любой ОС, для которой установлена Java SE Runtime Environment. Среда выполнения сейчас разработана для 4-х основных ОС, а именно - Linux x64, Linux x86, Mac OS X, Solaris x64, а также Windows x86 и Windows x64.
Я буду тестировать на Windows x64, а также мы посмотрим как программа отработает на Linux x64. Скриншоты будут прилагаться.
1) Запускаем консоль
2) Прописываем команду cd и адрес где находиться программа
3) Прописываем команду java –jar и имя файла
Рис. 7.1 – запуск java приложения
4) Вводим в соответствующие поля:
4.1) Вводим правильно все значения, -1 степень пока не вводим. Проверяем конечный результат в программе MathCad.
Рис 7.2 – нормальное тестирование без -1-ой степени
4.1) Вводим правильно все значения, Сумма степеней «y» ровна -1 (-13+12 = -1). Проверяем конечный результат в программе MathCad.
Рис. 7.3 – значение степени «у» ровно -1
4.2) Вводим правильно все значения, Сумма степеней «x» и сумма степеней «y» ровна -1 Проверяем конечный результат в программе MathCad.
Рис 7.4 – значение степени х и у ровно -1
4.2) Вводим правильно все значения, Сумма степеней «x» ровна -1 Проверяем конечный результат в программе MathCad.
Рис.7.4 – значение степени «х» ровно -1
4.3) Вводим ОЧЕНЬ БОЛЬШУЮ СТЕПЕНЬ «х»
Рис. 7.5 – очень большая степень «х»
4.3) Вводим буквы вместо степени «х»
Рис. 7.6 – ввод букв
4.4) Пробуем запустить программу на Linux:
Рис. 7.7 – запуск на линукс
Как видно все работает, только шрифт немного не соответствует тому что в Windows…
Тестирование показало, что ПО корректно работает с реализованным алгоритмом. Реализация ПО включает ввод и контроль данных с экранной формы, что значительно улучшает устойчивость программы к сбоям.
Тестирование всех возможных реакций программы на входные данные показало, что разработанное ПО соответствует требованиям постановке задачи.
ЛИСТИНГ ИСХОДНОГО КОДА
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class IntegralFrame extends JFrame {
private String[] itemsmonom = {
"1-й моном",
"2-й моном",
"3-й моном",
"4-й моном",
"5-й моном",
"6-й моном",
"7-й моном",
"8-й моном",
"9-й моном",
"10-й моном",
"11-й моном",
"12-й моном",
"13-й моном",
"14-й моном",
"15-й моном",
"16-й моном",
"17-й моном",
"18-й моном",
"19-й моном",
"20-й моном"
};
private String[] itemspolinom = { "Редактирование полинома φᵢ", "Редактирование полинома φᵤ" };
JButton btnOk = new JButton("OK"); //создание кнопки
JButton btnResult = new JButton("INTEGRATE"); //создание кнопки
private JTextField textFieldCONST, textFieldpwrX, textFieldpwrY, textFieldpwrZ,
textFieldA, textFieldB, textFieldC, textFieldD, textFieldZ;
private JLabel integral, LabelCONST, LabelA, LabelB, LabelC, LabelD, LabelZ, LabelpwrX, LabelpwrY, LabelpwrZ;
private JComboBox monomBox = new JComboBox(itemsmonom); //создание выпадающего списка
private JComboBox polinomBox = new JComboBox(itemspolinom); //создание выпадающего списка
private String[] r = { "₁", "₂", "₃", "₄", "₅", "₆", "₇", "₈", "₉", "₁₀", "₁₁", "₁₂", "₁₃", "₁₄", "₁₅", "₁₆", "₁₇", "₁₈", "₁₉", "₂₀" };
private String[] FunctioNiu = { "φᵢ: ", "φᵤ: " };
private int i = 0, u = 0; //счетчики массивов констант и степеней
private double [][] CONST = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
private int [][] POWx = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
POWy = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
POWz = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
private double A = 0;
private double B = 0;
private double C = 0;
private double D = 0;
private double Z = 0;
public IntegralFrame() {
super ("Нахождение двойного интеграла - КП Васевич Н.Р.");
setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE);
setBounds(300, 300, 800, 210); //координаты расположения и размер окна
getContentPane().setLayout(null);
int X = 140, deltaX = 110,
Y = 130;
btnResult. setBounds(X + 4 * deltaX + 70, Y - 1, 120, 23); //координаты расположения и размер кнопки btnOk
btnOk. setBounds(X + 4 * deltaX - 25, Y - 1, 89, 23); //координаты расположения и размер кнопки btnOk
integral = new JLabel("∫∫φᵢ·(φᵤ)'ₓ dx dy");
integral. setBounds(10, 15, 315, 30);
LabelA = new JLabel("a = ");
LabelA. setBounds(X - 30, Y - 40, 120, 18);
LabelB = new JLabel("b = ");
LabelB. setBounds(X - 30 + deltaX - 10, Y - 40, 120, 18);
LabelC = new JLabel("c = ");
LabelC. setBounds(X - 30 + 2 * deltaX - 10, Y - 40, 120, 18);
LabelD = new JLabel("d = ");
LabelD. setBounds(X - 30 + 3 * deltaX - 10, Y - 40, 120, 18);
LabelZ = new JLabel("z = ");
LabelZ. setBounds(X - 30 + 4 * deltaX - 10, Y - 40, 120, 18);
LabelCONST = new JLabel(FunctioNiu [ u ] + " С" + r [ i ] + " =");
LabelCONST. setBounds(X - 100, Y, 120, 18);
LabelpwrX = new JLabel("X" + r [ i ] + "^ ");
LabelpwrX. setBounds(X + deltaX - 48, Y, 100, 18);
LabelpwrY = new JLabel("Y" + r [ i ] + "^ ");
LabelpwrY. setBounds(X + 2 * deltaX - 48, Y, 100, 18);
LabelpwrZ = new JLabel("Z" + r [ i ] + "^ ");
LabelpwrZ. setBounds(X + 3 * deltaX - 48, Y, 100, 18);
textFieldCONST = new JTextField(); //создание элемента для редактирования текста
textFieldCONST. setBounds(X + 0 * deltaX, Y, 50, 20); //положение Х,У и размер элемента
textFieldA = new JTextField(); //создание элемента для редактирования текста
textFieldA. setBounds(X + 0 * deltaX, Y - 40, 50, 20); //положение Х,У и размер элемента
textFieldB = new JTextField(); //создание элемента для редактирования текста
textFieldB. setBounds(X + 1 * deltaX - 10, Y - 40, 50, 20); //положение Х,У и размер элемента
textFieldC = new JTextField(); //создание элемента для редактирования текста
textFieldC. setBounds(X + 2 * deltaX - 10, Y - 40, 50, 20); //положение Х,У и размер элемента
textFieldD = new JTextField(); //создание элемента для редактирования текста
textFieldD. setBounds(X + 3 * deltaX - 10, Y - 40, 50, 20); //положение Х,У и размер элемента
textFieldZ = new JTextField(); //создание элемента для редактирования текста
textFieldZ. setBounds(X + 4 * deltaX - 10, Y - 40, 50, 20); //положение Х,У и размер элемента
textFieldpwrX = new JTextField(); //создание элемента для редактирования текста
textFieldpwrX. setBounds(X + deltaX - 10, Y, 50, 20); //положение Х,У и размер элемента
textFieldpwrY = new JTextField(); //создание элемента для редактирования текста
textFieldpwrY. setBounds(X + 2 * deltaX - 10, Y, 50, 20); //положение Х,У и размер элемента
textFieldpwrZ = new JTextField(); //создание элемента для редактирования текста
textFieldpwrZ. setBounds(X + 3 * deltaX - 10, Y, 50, 20); //положение Х,У и размер элемента
polinomBox. setAlignmentX(LEFT_ALIGNMENT);
polinomBox. setBounds(200, 20, 250, 24); //положение Х,У и размер элемента
monomBox. setAlignmentX(LEFT_ALIGNMENT);
monomBox. setBounds(450, 20, 110, 24); //положение Х,У и размер элемента
Font font = new Font("Cambria Math", Font. PLAIN, 16); //установка стиля текста
Font font1 = new Font("Cambria Math", Font. PLAIN, 22); //установка стиля текста
btnResult. setFont(font); //присвоение стиля
btnOk. setFont(font); //присвоение стиля
integral. setFont(font1); //присвоение стиля
LabelA. setFont(font); //присвоение стиля
LabelB. setFont(font); //присвоение стиля
LabelC. setFont(font); //присвоение стиля
LabelCONST. setFont(font); //присвоение стиля
LabelD. setFont(font); //присвоение стиля
LabelZ. setFont(font); //присвоение стиля
LabelpwrX. setFont(font); //присвоение стиля
LabelpwrY. setFont(font); //присвоение стиля
LabelpwrZ. setFont(font); //присвоение стиля
polinomBox. setFont(font);
monomBox. setFont(font); //присвоение стиля
textFieldA. setFont(font); //присвоение стиля
textFieldB. setFont(font); //присвоение стиля
textFieldC. setFont(font); //присвоение стиля
textFieldCONST. setFont(font); //присвоение стиля
textFieldD. setFont(font); //присвоение стиля
textFieldZ. setFont(font); //присвоение стиля
textFieldpwrX. setFont(font); //присвоение стиля
textFieldpwrY. setFont(font); //присвоение стиля
textFieldpwrZ. setFont(font); //присвоение стиля
getContentPane().add(btnOk); //добавление в активное окно
getContentPane().add(integral); //добавление в активное окно
getContentPane().add(LabelCONST); //добавление в активное окно
getContentPane().add(LabelA); //добавление в активное окно
getContentPane().add(LabelB); //добавление в активное окно
getContentPane().add(LabelC); //добавление в активное окно
getContentPane().add(LabelD); //добавление в активное окно
getContentPane().add(LabelZ); //добавление в активное окно
getContentPane().add(LabelpwrX); //добавление в активное окно
getContentPane().add(LabelpwrY); //добавление в активное окно
getContentPane().add(LabelpwrZ); //добавление в активное окно
getContentPane().add(textFieldA); //добавление в активное окно
getContentPane().add(textFieldB); //добавление в активное окно
getContentPane().add(textFieldC); //добавление в активное окно
getContentPane().add(textFieldCONST); //добавление в активное окно
getContentPane().add(textFieldD); //добавление в активное окно
getContentPane().add(textFieldZ); //добавление в активное окно
getContentPane().add(textFieldpwrX); //добавление в активное окно
getContentPane().add(textFieldpwrY); //добавление в активное окно
getContentPane().add(textFieldpwrZ); //добавление в активное окно
getContentPane().add(polinomBox); //добавление в активное окно
getContentPane().add(monomBox); //добавление в активное окно
getContentPane().add(btnResult);
textFieldCONST. setText(Double. toString (CONST [ u ][ i ]));
textFieldA. setText(Double. toString (A));
textFieldB. setText(Double. toString (B));
textFieldC. setText(Double. toString (C));
textFieldD. setText(Double. toString (D));
textFieldZ. setText(Double. toString (Z));
textFieldpwrX. setText(Integer. toString (POWx [ u ][ i ]));
textFieldpwrY. setText(Integer. toString (POWy [ u ][ i ]));
textFieldpwrZ. setText(Integer. toString (POWz [ u ][ i ]));
class btnResultEventListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
javax.swing.SwingUtilities. invokeLater (new Runnable() {
public void run() {
JFrame. setDefaultLookAndFeelDecorated (false);
AnalyticalCalculation CalculationFrame = new AnalyticalCalculation();
CalculationFrame.create();
}
}
);
}
}
btnResult. addActionListener(new btnResultEventListener());
class monomBoxActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
JComboBox box = (JComboBox) e.getSource();
//getSource() возвращает ссылку на объект, от которого пришло событие пруф
i = box.getSelectedIndex();
LabelCONST. setText(FunctioNiu [ u ] + " С" + r [ i ] + " = ");
LabelpwrX. setText("X" + r [ i ] + " ^ ");
LabelpwrY. setText("Y" + r [ i ] + " ^ ");
LabelpwrZ. setText("Z" + r [ i ] + " ^ ");
textFieldCONST. setText(Double. toString (CONST [ u ][ i ]));
textFieldA. setText(Double. toString (A));
textFieldB. setText(Double. toString (B));
textFieldC. setText(Double. toString (C));
textFieldD. setText(Double. toString (D));
textFieldZ. setText(Double. toString (Z));
textFieldpwrX. setText(Integer. toString (POWx [ u ][ i ]));
textFieldpwrY. setText(Integer. toString (POWy [ u ][ i ]));
textFieldpwrZ. setText(Integer. toString (POWz [ u ][ i ]));
}
}
monomBox. addActionListener(new monomBoxActionListener());
class polinomBoxActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
JComboBox box = (JComboBox) e.getSource();
//getSource() возвращает ссылку на объект, от которого пришло событие пруф
u = box.getSelectedIndex();
LabelCONST. setText(FunctioNiu [ u ] + " С" + r [ i ] + " = ");
LabelpwrX. setText("X" + r [ i ] + " ^ ");
LabelpwrY. setText("Y" + r [ i ] + " ^ ");
LabelpwrZ. setText("Z" + r [ i ] + " ^ ");
textFieldCONST. setText(Double. toString (CONST [ u ][ i ]));
textFieldA. setText(Double. toString (A));
textFieldB. setText(Double. toString (B));
textFieldC. setText(Double. toString (C));
textFieldD. setText(Double. toString (D));
textFieldZ. setText(Double. toString (Z));
textFieldpwrX. setText(Integer. toString (POWx [ u ][ i ]));
textFieldpwrY. setText(Integer. toString (POWy [ u ][ i ]));
textFieldpwrZ. setText(Integer. toString (POWz [ u ][ i ]));
}
}
polinomBox. addActionListener(new polinomBoxActionListener());
class btnOkActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
String valueAssignment = "Числа вводятся БЕЗ БУКВ и БЕЗ СИМВОЛОВ" + System. lineSeparator ()
+ "Для записи дробной части используется ТОЧКА" + System. lineSeparator ()
+ "Показатели степеней для x,y,z ― только ЦЕЛЫЕ ЧИСЛА" + System. lineSeparator ()
+ "В полях все значения должны быть ЗАПОЛНЕНЫ" + System. lineSeparator ()
+ "Если значения нет, то введите в поле 0";
try {
CONST [ u ][ i ] = Double. parseDouble (textFieldCONST. getText());
POWx [ u ][ i ] = Integer. parseInt (textFieldpwrX. getText());
POWy [ u ][ i ] = Integer. parseInt (textFieldpwrY. getText());
POWz [ u ][ i ] = Integer. parseInt (textFieldpwrZ. getText());
A = Double. parseDouble (textFieldA. getText());
B = Double. parseDouble (textFieldB. getText());
C = Double. parseDouble (textFieldC. getText());
D = Double. parseDouble (textFieldD. getText());
Z = Double. parseDouble (textFieldZ. getText());
javax.swing.SwingUtilities. invokeLater (new Runnable() {
public void run() {
JFrame. setDefaultLookAndFeelDecorated (true);
}
});
}
catch (IllegalArgumentException o) {
JOptionPane. showMessageDialog (null, valueAssignment, "Ошибка введеных Вами данных...", JOptionPane. PLAIN_MESSAGE);
}
}
}
btnOk. addActionListener(new btnOkActionListener()); //добавление события
}
class AnalyticalCalculation extends JFrame {
private String TEXT = "";
private String ABCDmessageEROR = "Неверные пределы интегрирования." + System. lineSeparator () + "Введите данные, при которых выполняется условия: B>A и D>C";
private double result = 0;
public void create() {
setBounds(200, 200, 800, 500);
getContentPane().setLayout(new BorderLayout());
if ((B <= A) || (D <= C)) {
JOptionPane. showMessageDialog (null, ABCDmessageEROR, "Ошибка введеных Вами данных...", JOptionPane. PLAIN_MESSAGE);
} else {
TEXT = "∫∫φᵢ·(φᵤ)'ₓ dx dy = ";
for (int i = 0; i < 20; i++) {
if ((POWx [0][i] + POWx [1][i]!= 0)&&(POWy [0][i] + POWy [1][i]!= -1)) {
if ((CONST [0][i]!= 0) && (CONST [1][i]!= 0) && (POWx [1][i]!= 0) && (Z!= 0)) {
if ((i > 0) && (i < 20)) { TEXT = TEXT + System. lineSeparator () + " + ";}
TEXT = TEXT
+ Double. toString (CONST [0][i]) + "·"
+ Double. toString (CONST [1][i]) + "·"
+ Integer. toString (POWx [1][i]) + "·"
+ Double. toString (Z)
+ MathText. pwr (Integer. toString (POWz [0][i])) + MathText. pwr ("+") + MathText. pwr (Integer. toString (POWz [1][i])) + "·"
+ "(" + "a" + MathText. pwr (Integer. toString (POWy [0][i])) + MathText. pwr ("+") + MathText. pwr (Integer. toString (POWy [1][i])) + MathText. pwr ("+" + "1")
+ " ― " + "b" + MathText. pwr (Integer. toString (POWy [0][i])) + MathText. pwr ("+") + MathText. pwr (Integer. toString (POWy [1][i])) + MathText. pwr ("+" + "1") + ")"
+ "·" + "(" + "c" + MathText. pwr (Integer. toString (POWx [0][i])) + MathText. pwr ("+") + MathText. pwr (Integer. toString (POWx [1][i]))
+ " ― " + "d" + MathText. pwr (Integer. toString (POWx [0][i])) + MathText. pwr ("+") + MathText. pwr (Integer. toString (POWx [1][i])) + ")"
+ "(" + Integer. toString (POWx [0][i]) + " + " + POWx [1][i] + ")" + MathText. pwr ("-1")
+ "(" + Integer. toString (POWy [0][i]) + " + " + POWy [1][i] + " + " + "1" + ")" + MathText. pwr ("-1");
result = result + CONST [0][i]* CONST [1][i]* POWx [1][i]*Math. pow (Z, POWz [0][i]+ POWz [1][i])
*(Math. pow (A, POWy [0][i]+ POWy [1][i]+1) - Math. pow (B, POWy [0][i]+ POWy [1][i]+1))
*(Math. pow (C, POWx [0][i]+ POWx [1][i]) - Math. pow (D, POWx [0][i]+ POWx [1][i]))
*Math. pow (POWx [0][i] + POWx [1][i],-1)
*Math. pow (POWy [0][i] + POWy [1][i] + 1,-1);
}
}
if ((POWx [0][i] + POWx [1][i] == 0)&&(POWy [0][i] + POWy [1][i]!= -1)) {
if ((CONST [0][i]!= 0) && (CONST [1][i]!= 0) && (POWx [1][i]!= 0) && (Z!= 0)) {
if ((i > 0) && (i < 20)) { TEXT = TEXT + System. lineSeparator () + " + ";}
TEXT = TEXT
+ Double. toString (CONST [0][i]) + "·"
+ Double. toString (CONST [1][i]) + "·"
+ Integer. toString (POWx [1][i]) + "·"
+ Double. toString (Z)
+ MathText. pwr (Integer. toString (POWz [0][i])) + MathText. pwr ("+") + MathText. pwr (Integer. toString (POWz [1][i])) + "·"
+ "(" + "a" + MathText. pwr (Integer. toString (POWy [0][i])) + MathText. pwr ("+") + MathText. pwr (Integer. toString (POWy [1][i])) + MathText. pwr ("+" + "1")
+ " ― " + "b" + MathText. pwr (Integer. toString (POWy [0][i])) + MathText. pwr ("+") + MathText. pwr (Integer. toString (POWy [1][i])) + MathText. pwr ("+" + "1") + ")"
+ "·" + "(ln(c)―ln(d))"
+ "(" + Integer. toString (POWy [0][i]) + " + " + POWy [1][i] + " + " + "1" + ")" + MathText. pwr ("-1");
result = result + CONST [0][i]* CONST [1][i]* POWx [1][i]*Math. pow (Z, POWz [0][i]+ POWz [1][i])
*(Math. pow (A, POWy [0][i]+ POWy [1][i]+1) - Math. pow (B, POWy [0][i]+ POWy [1][i]+1))
*(Math. log (C) - Math. log (D))
*Math. pow (POWy [0][i] + POWy [1][i] + 1,-1);
}
}
if ((POWx [0][i] + POWx [1][i]!= 0)&&(POWy [0][i] + POWy [1][i] == -1)){
if ((CONST [0][i]!= 0) && (CONST [1][i]!= 0) && (POWx [1][i]!= 0) && (Z!= 0)) {
if ((i > 0) && (i < 20)) { TEXT = TEXT + System. lineSeparator () + " + ";}
TEXT = TEXT
+ Double. toString (CONST [0][i]) + "·"
+ Double. toString (CONST [1][i]) + "·"
+ Integer. toString (POWx [1][i]) + "·"
+ Double. toString (Z)
+ MathText. pwr (Integer. toString (POWz [0][i])) + MathText. pwr ("+") + MathText. pwr (Integer. toString (POWz [1][i])) + "·"
+ "(ln(a)―ln(b))"
+ "·" + "(" + "c" + MathText. pwr (Integer. toString (POWx [0][i])) + MathText. pwr ("+") + MathText. pwr (Integer. toString (POWx [1][i]))
+ " ― " + "d" + MathText. pwr (Integer. toString (POWx [0][i])) + MathText. pwr ("+") + MathText. pwr (Integer. toString (POWx [1][i])) + ")"
+ "(" + Integer. toString (POWx [0][i]) + " + " + POWx [1][i] + ")" + MathText. pwr ("-1");
result = result + CONST [0][i]* CONST [1][i]* POWx [1][i]*Math. pow (Z, POWz [0][i]+ POWz [1][i])
*(Math. log (A) - Math. log (B))
*(Math. pow (C, POWx [0][i]+ POWx [1][i]) - Math. pow (D, POWx [0][i]+ POWx [1][i]))
*Math. pow (POWx [0][i] + POWx [1][i],-1);
}
}
if ((POWx [0][i] + POWx [1][i] == 0)&&(POWy [0][i] + POWy [1][i] == -1)){
if ((CONST [0][i]!= 0) && (CONST [1][i]!= 0) && (POWx [1][i]!= 0) && (Z!= 0)) {
if ((i > 0) && (i < 20)) { TEXT = TEXT + System. lineSeparator () + " + ";}
TEXT = TEXT
+ Double. toString (CONST [0][i]) + "·"
+ Double. toString (CONST [1][i]) + "·"
+ Integer. toString (POWx [1][i]) + "·"
+ Double. toString (Z)
+ MathText. pwr (Integer. toString (POWz [0][i])) + MathText. pwr ("+") + MathText. pwr (Integer. toString (POWz [1][i])) + "·"
+ "(ln(a)―ln(b))"
+ "(ln(c)―ln(d))";
result = result + CONST [0][i]* CONST [1][i]* POWx [1][i]*Math. pow (Z, POWz [0][i]+ POWz [1][i])
*(Math. log (A) - Math. log (B))
*(Math. log (C) - Math. log (D));
}
}
}
TEXT = TEXT + " = " + Double. toString (result);
JTextArea IngtegralTextArea = new JTextArea();
IngtegralTextArea.setBounds(10, 60, 762, 500);
IngtegralTextArea.setText(TEXT);
IngtegralTextArea.setEditable(true);
IngtegralTextArea.setLineWrap(true);
Font font2 = new Font("Cambria Math", Font. PLAIN, 22); //установка стиля текста
IngtegralTextArea.setFont(font2);
final JScrollPane IntegralScrollPane = new JScrollPane(IngtegralTextArea);
getContentPane().add(IntegralScrollPane);
IntegralScrollPane.setVerticalScrollBarPolicy(JScrollPane. VERTICAL_SCROLLBAR_ALWAYS);
setVisible(true);
}
}
}
}
class MathText {
static String pwr(String s){
String[] power = { "⁰", "¹", "²", "³", "⁴", "⁵", "⁶", "⁷", "⁸", "⁹", "⁺", " ", "⁻", "⁽", "⁾" };
String str = "";
boolean minus = false;
for (char c: s.toLowerCase().toCharArray()){
if (c == '0'){str = str + power[0];}
if (c == '1'){str = str + power[1];}
if (c == '2'){str = str + power[2];}
if (c == '3'){str = str + power[3];}
if (c == '4'){str = str + power[4];}
if (c == '5'){str = str + power[5];}
if (c == '6'){str = str + power[6];}
if (c == '7'){str = str + power[7];}
if (c == '8'){str = str + power[8];}
if (c == '9'){str = str + power[9];}
if (c == '+'){str = str + power[10];}
if (c == ' '){str = str + power[11];}
if (c == '-'){str = str + "⁽" + power[12];
if (c == '('){str = str + power[13];}
if (c == ')'){str = str + power[14];}
minus = true;}
}
if (minus == true) {str = str + "⁾";}
return str;
}
}
public class Main {
public static void main(String[] args) {
IntegralFrame frame = new IntegralFrame();
frame.setVisible(true);
}
}
ВЫВОДЫ
Была проделана работа по созданию ПО расчета двойного интеграла. Интеграл рассчитывается по общей формуле исходя из формул интеграла для степенной функции. Другие методы не рассматривались, так как данный вариант расчета дает точный результат.
В качестве языка и среды работы ПО, была выбрана Java. Она обеспечивает мультиплатформенность, скорость работы, открытость кода для редактирования и доработки под разные нужды.
Как уже упоминалось выше программа состоит из трех классов:
IntegralFrame, MathText, и Main.
А также подклассов суперкласса IntegralFrame:
btnResultEventListener, monomBoxActionListener,
polinomBoxActionListener, btnOkActionListener,
и самый большой – AnalyticalCalculation.
Я считаю поставленная задача выполнена в полном объеме.
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
https://docs.oracle.com/javase/7/docs/api/javax/swing/package-summary.html
https://javaswing.wordpress.com/