Основа класу — статичні константи, що визначають форму курсора:
· CROSSHAIR_CURSOR — курсор у вигляді хреста, появляється при пошуку позиції для розміщення якогось елемента;
· DEFAULT_CURSOR — звичайна форма курсора — стрілка вліво вверх;
· HAND_CURSOR — "указуючий перст", появляється при виборі якогось елемента списку;
· MOVE_CURSOR — хрест зі стрілками, появлється при переміщенні елемента;
· TEXT_CURSOR — вертикальна риска, появляється в текстових полях;
· WAIT_CURSOR — зображення годинника, появляється при очікуванні.
Наступні курсори появляються при наближенні до краю або кута компонента:
· E_RESIZE_CURSOR — стрілка вправо з упором;
· N_RESIZE_CURSOR — стрілка вверх с упором;
· NE_RESIZE_CURSOR — стрілка вправо вверх, упираюча в кут;
· NW_RESIZE_CURSOR — стрілка вліво вверх, упираюча в кут;
· S_RESIZE_CURSOR — стрілка вниз з упором;
· SE_RESIZE_CURSOR — стрілка вправо вниз, упираюча в кут;
· SW_RESIZE_CURSOR — стрілка вліво вниз, упираюча в кут;
· W_RESIZE_CURSOR — стрілка вліво з упором.
Текст програми :
import static java.lang.System.out;
public class zero {
public static void main(String[] args) throws Exception {
double[][] A = {
{ 520, 670, 670 },
{ 250, 1100, 1100 },
{ -50, 950, 2200 }
};
double[] P = {
0.25, 0.4, 0.35
};
Test waldTest = getWaldTest(A);
Test svgTest = getSavageTest(A);
Test optTest = getOptimisticTest(A);
Test hurTest = getHurwitzTest(A, 0.5);
Test bayesTest = getBayesTest(A, P);
out.println("\nКритерій крайнього песимізму (критерій Вальда): "
+ waldTest.value + " при стратегії "
+ (waldTest.strategy + 1) + "\n");
out.println("\nКритерій Севіджа: " +
+ svgTest.value + " при стратегії " +
+ (svgTest.strategy + 1) + "\n");
out.println("\nКритерій максимального мат. очікування (критерій Баеса): " +
+ bayesTest.value + " при стратегии " +
+ (bayesTest.strategy + 1) + "\n");
out.println("\nКритерій крайнього оптимізма (критерій «азартного гравця»): "
+ optTest.value + " при стратегії "
+ (optTest.strategy + 1) + "\n");
out.println("\nКритерій оптимізма песимізма (критерій Гурвіца): "
+ hurTest.value + " при стратегії "
+ (hurTest.strategy + 1) + "\n");
}
public static class Test {
public double value;
public int strategy;
public Test(double value, int strategy) {
this.value = value;
this.strategy = strategy;
}
}
public static Test getWaldTest(double[][] A) {
int n = A.length;
int m = A[0].length;
double[] w = new double[n];
double W = Double.NEGATIVE_INFINITY;
int s = -1;
for (int i = 0; i < n; ++i) {
w[i] = Double.POSITIVE_INFINITY;
for (int j = 0; j < m; ++j) {
if (w[i] > A[i][j]) {
w[i] = A[i][j];
}
}
if (W < w[i]) {
W = w[i];
s = i;
}
}
return new Test(W, s);
}
public static Test getSavageTest(double[][] A) {
int n = A.length;
int m = A[0].length;
double[][] R = new double[n][m];
double min = Double.MAX_VALUE;
for (int j = 0; j < m; ++j) {
double max = Double.MIN_VALUE;
for (int i = 0; i < n; ++i) {
if (max < A[i][j]) {
max = A[i][j];
}
}
for (int i = 0; i < n; ++i) {
R[i][j] = max - A[i][j];
}
}
min = Double.MAX_VALUE;
int s = -1;
for (int i = 0; i < n; ++i) {
double max = Double.MIN_VALUE;
for (int j = 0; j < m; ++j) {
if (max < R[i][j]) {
max = R[i][j];
}
}
if (min > max) {
min = max;
s = i;
}
}
return new Test(min, s);
}
public static Test getOptimisticTest(double[][] A) {
int n = A.length;
int m = A[0].length;
double[] w = new double[n];
double W = Double.NEGATIVE_INFINITY;
int s = -1;
for (int i = 0; i < n; ++i) {
w[i] = Double.NEGATIVE_INFINITY;
for (int j = 0; j < m; ++j) {
if (w[i] < A[i][j]) {
w[i] = A[i][j];
}
}
if (W < w[i]) {
W = w[i];
s = i;
}
}
return new Test(W, s);
}
public static Test getHurwitzTest(double[][] A, double lambda) {
int n = A.length;
int m = A[0].length;
double[] w = new double[n];
double W = Double.NEGATIVE_INFINITY;
int s = -1;
for (int i = 0; i < n; ++i) {
double min = Double.POSITIVE_INFINITY;
double max = Double.NEGATIVE_INFINITY;
for (int j = 0; j < m; ++j) {
if (min > A[i][j]) {
min = A[i][j];
}
if (max < A[i][j]) {
max = A[i][j];
}
}
w[i] = lambda * min + (1 - lambda) * max;
if (W < w[i]) {
W = w[i];
s = i;
}
}
return new Test(W, s);
}
public static Test getBayesTest(double[][] A, double[] P) {
int n = A.length;
int m = A[0].length;
double W = Double.NEGATIVE_INFINITY;
int s = -1;
for (int i = 0; i < n; ++i) {
double sum = 0;
for (int j = 0; j < m; ++j) {
sum += A[i][j] * P[j];
}
if (W < sum) {
W = sum;
s = i;
}
}
return new Test(W, s);
}
}
Висновок : на даній лабораторній роботі я отримав наваки роботи з графічним інтерфейсом та граф. Бібліотекою AWT.