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