Автор Марк Кандеев задал вопрос в разделе Java
Помогите сделать java приложение! { СРОЧНО } и получил лучший ответ
Ответ от
Даа...
Паскаль до этого изучал?
ОЧЕНЬ ОЧЕНЬ ОЧЕНЬ СЛОЖНО НИЧЕГО НЕ СКАЗАТЬ ОБ ЭТОМ "КОДЕ". О КЛАССЕ 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 инициализируется, но не используется. Нигде. Она ни на что не влияет. Я так понял, часть функций ещё не доделана?
ПОСЛЕ НАЧАЛА ОПИСАНИЯ КОДА Я ГОВОРИЛ ТОЛЬКО ОБ ОШИБКАХ, КОТОРЫЕ МОГУТ ПРИВЕСТИ К СЕРЬЁЗНЫМ ПРОБЛЕМАМ. О КАЧЕСТВЕ КОДА И РАЗЛИЧНЫХ ШЕРОХОВАТОСТЯХ, КОТОРЫЕ МОЖНО УСТРАНИТЬ, Я, ПО ВАШЕЙ ПРОСЬБЕ, ПРОМОЛЧАЛ.
Марк Кандеев
Ученик
(92)
"Ещё одно:
После 2 правильных ответов новый пример не генерируется, а остаётся старый.
Вы так и хотели?" Нет, у меня в планах такого не было.
Эмм.. А как это исправить?
текстовые переменные не сравнивают через ==