Java

Помогите сделать java приложение! { СРОЧНО }

Я заранее извиняюсь за грубость.
Я не хочу выслушивать крики людей, типа :Твой код не эффективен, КАК ТЫ ТАК ПЛОХО КОДИШь, и. т. п.
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class nabrosok {

static class var {

public static int a = 1;
public static int b = 10;

public static int c = a + (int) (Math.random() * b);
public static int d = a + (int) (Math.random() * b);

public static int result = c + d;

public static String e = String.valueOf(c);
public static String f = String.valueOf(d);
public static String ress = String.valueOf(result);

public static boolean bol = true;

}

public static void main (String[] args) {

JPanel windowContent= new JPanel();

FlowLayout fl = new FlowLayout();
windowContent.setLayout(fl);

JLabel lab = new JLabel();
JButton b1 = new JButton("-");
JButton b2 = new JButton("+");
JButton b3 = new JButton("OK");

JTextField edit = new JTextField(10);

windowContent.add(b1);
windowContent.add(b2);
windowContent.add(lab);
windowContent.add(edit);
windowContent.add(b3);

lab.setText(var.e + " + " + var.f + " = ");

b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {

var.bol = false;

}
}
);

b2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {

var.bol = true;

}
}
);

b3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {

if (edit.getText() == var.ress) {

JOptionPane.showMessageDialog(windowContent, " Молодец, правильно! ");

var.c = var.a + (int) (Math.random() + var.b);
var.c = var.a + (int) (Math.random() + var.b);

var.result = var.c + var.d;
var.e = String.valueOf(var.c);
var.f = String.valueOf(var.d);
var.ress = String.valueOf(var.result);

lab.setText(var.e + " + " + var.f + " = ");

}
else {
JOptionPane.showMessageDialog(windowContent, " Не правильно, попробуй еще раз. ");
}

}
}
);

JFrame frame = new JFrame("Посчитай-Ка");
frame.setContentPane(windowContent);

frame.setSize(400, 70);
frame.setVisible(true);

}

}

Проблема вот в чем: когда я нажимаю на кнопку, при этом вводя правильный ответ в edit, выскакивает ошибка о том, что я ввел не правильное число.
Заранее спасибо!
Даа...
Паскаль до этого изучал?
ОЧЕНЬ ОЧЕНЬ ОЧЕНЬ СЛОЖНО НИЧЕГО НЕ СКАЗАТЬ ОБ ЭТОМ "КОДЕ". О КЛАССЕ var...
Здесь даже говорить о том, что классы называть с большой буквы принято странно. На фоне других ляпов.

Но на этом я эмоции свои подавил.
Вот отредактированный код:
import java.awt.*;
import java.util.Objects;

import javax.swing.*;

public class nabrosok {

private static final int a = 1;
private static int b = 10;

private static int c = a + (int) (Math.random() * b);
private static int d = a + (int) (Math.random() * b);

private static int result = c + d;

private static String e = String.valueOf(c);
private static String f = String.valueOf(d);
private static String ress = String.valueOf(result);

private static boolean bol = true;

public static void main (String[] args) {

JPanel windowContent= new JPanel();

FlowLayout fl = new FlowLayout();
windowContent.setLayout(fl);

JLabel lab = new JLabel();
JButton b1 = new JButton("-");
JButton b2 = new JButton("+");
JButton b3 = new JButton("OK");

JTextField edit = new JTextField(10);

windowContent.add(b1);
windowContent.add(b2);
windowContent.add(lab);
windowContent.add(edit);
windowContent.add(b3);

lab.setText(e + " + " + f + " = ");

b1.addActionListener(e -> bol = false
);

b2.addActionListener(e -> bol = true
);

b3.addActionListener(e -> {

if (Objects.equals(edit.getText(), ress)) {

JOptionPane.showMessageDialog(windowContent, " Молодец, правильно! ");

c = a + (int) (Math.random() + b);
c = a + (int) (Math.random() + b);

result = c + d;
nabrosok.e = String.valueOf(c);
f = String.valueOf(d);
ress = String.valueOf(result);

lab.setText(nabrosok.e + " + " + f + " = ");

}
else {
JOptionPane.showMessageDialog(windowContent, " Не правильно, попробуй еще раз. ");
}

}
);

JFrame frame = new JFrame("Посчитай-Ка");
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setContentPane(windowContent);

frame.setSize(400, 70);
frame.setVisible(true);

}

}

Ошибки было 2.

Первая:
edit.getText() == var.ress
Это ссылочный тип данных. Объекты надо сравнивать через equals.

Вторая:
Не было строчки
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
И кнопки выход тоже не было.

А знаете, что это значит? Что после нажатия на крестик и закрытия окна, приложение оставалось работать в фоновом режиме. Закрыть его можно было только через диспетчер задач. А там в Java процессах легко запутаться, т. к. после каждого запуска появляется новый.
+ 2 стандартных процесса.

Ещё одно:
После 2 правильных ответов новый пример не генерируется, а остаётся старый.
Вы так и хотели?

Ах да! Ещё обратите внимание на то, что переменная boolean bol инициализируется, но не используется. Нигде. Она ни на что не влияет. Я так понял, часть функций ещё не доделана?

ПОСЛЕ НАЧАЛА ОПИСАНИЯ КОДА Я ГОВОРИЛ ТОЛЬКО ОБ ОШИБКАХ, КОТОРЫЕ МОГУТ ПРИВЕСТИ К СЕРЬЁЗНЫМ ПРОБЛЕМАМ. О КАЧЕСТВЕ КОДА И РАЗЛИЧНЫХ ШЕРОХОВАТОСТЯХ, КОТОРЫЕ МОЖНО УСТРАНИТЬ, Я, ПО ВАШЕЙ ПРОСЬБЕ, ПРОМОЛЧАЛ.
Вячеслав Иванов
Вячеслав Иванов
3 550
Лучший ответ
Вадим Карвалолович Мне переменная bol нужна в дальнейшем.
текстовые переменные не сравнивают через ==
import java.awt.*; import java.util.Objects; import javax.swing.*; public class nabrosok { private static final int a = 1; private static int b = 10; private static int c = a + (int) (Math.random() * b); private static int d = a + (int) (Math.random() * b); private static int result = c + d; private static String e = String.valueOf(c); private static String f = String.valueOf(d); private static String ress = String.valueOf(result); private static boolean bol = true; public static void main (String[] args) { JPanel windowContent= new JPanel(); FlowLayout fl = new FlowLayout(); windowContent.setLayout(fl); JLabel lab = new JLabel(); JButton b1 = new JButton("-"); JButton b2 = new JButton("+"); JButton b3 = new JButton("OK"); JTextField edit = new JTextField(10); windowContent.add(b1); windowContent.add(b2); windowContent.add(lab); windowContent.add(edit); windowContent.add(b3); lab.setText(e + " + " + f + " = "); b1.addActionListener(e -> bol = false ); b2.addActionListener(e -> bol = true ); b3.addActionListener(e -> { if (Objects.equals(edit.getText(), ress)) { JOptionPane.showMessageDialog(windowContent, " Молодец, правильно! "); c = a + (int) (Math.random() + b); c = a + (int) (Math.random() + b); result = c + d; nabrosok.e = String.valueOf(c); f = String.valueOf(d); ress = String.valueOf(result); lab.setText(nabrosok.e + " + " + f + " = "); } else { JOptionPane.showMessageDialog(windowContent, " Не правильно, попробуй еще раз. "); } } ); JFrame frame = new JFrame("Посчитай-Ка"); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); frame.setContentPane(windowContent); frame.setSize(400, 70); frame.setVisible(true); } }