This question has already been answered:
- Regular expression for floating point numbers 3 responses
import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.swing.*; // * Created by 1 on 25.11.2017. public class Calculator extends JFrame { JFrame jframe = new JFrame("ΠΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡ"); //ΡΠΎΡΠΌΠ° //Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ°Π½Π΅Π»ΠΈ Π΄Π»Ρ ΠΊΠ½ΠΎΠΏΠΎΠΊ Π³ΡΠΈΠ΄ Π»ΠΎΡΡΡ(ΠΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ) JPanel panel = new JPanel(new GridLayout(4, 4, 5, 5)); JPanel batton_equally = new JPanel(new BorderLayout(1, 1)); //Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠ°Π½Π΅Π»Ρ Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠ° JPanel panel_text = new JPanel(new BorderLayout()); //Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ JTextField jtextfield = new JTextField(20); //Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΠΈ JButton bt1 = new JButton("7"); JButton bt2 = new JButton("8"); JButton bt3 = new JButton("9"); JButton bt31 = new JButton("Π‘"); JButton bt4 = new JButton("4"); JButton bt5 = new JButton("5"); JButton bt6 = new JButton("6"); JButton bt61 = new JButton("/"); JButton bt7 = new JButton("1"); JButton bt8 = new JButton("2"); JButton bt9 = new JButton("3"); JButton bt91 = new JButton("*"); JButton bt10 = new JButton("."); JButton bt11 = new JButton("0"); JButton bt12 = new JButton("="); JButton bt13 = new JButton("+"); JButton bt14 = new JButton("-"); public Calculator() { double[] first_value = {0}; double second_value = 0; String[] operation = {"+"}; jframe.setSize(300, 300); //ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ΅Π»ΡΠΊΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π·Π°ΠΊΡΡΡΠΈΡ ΠΎΠΊΠ½Π° jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jframe.setLocationRelativeTo(null); //? jframe.setLayout(new BorderLayout()); //ΠΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ° Π² ΠΏΠΎΠ»Π΅ ΠΏΠΎ ΠΏΡΠ°Π²ΠΎΠΌΡ ΠΊΡΠ°Ρ jtextfield.setHorizontalAlignment(JTextField.RIGHT); //Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠΈΡΡΠ° ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ jtextfield.setFont(new Font("Times New Roman", Font.PLAIN, 20)); //ΠΠ°Π΄Π°Π΅ΠΌ Π²ΠΈΠ΄ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠΈΡΡΠ° ΠΊΠ½ΠΎΠΏΠΎΠΊ bt31.setFont(new Font("Tahoma", Font.BOLD, 15)); bt61.setFont(new Font("Tahoma", Font.BOLD, 15)); bt91.setFont(new Font("Tahoma", Font.BOLD, 15)); bt10.setFont(new Font("Tahoma", Font.BOLD, 15)); bt12.setFont(new Font("Tahoma", Font.BOLD, 20)); bt13.setFont(new Font("Tahoma", Font.BOLD, 15)); bt14.setFont(new Font("Tahoma", Font.BOLD, 20)); //ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π° ΠΏΠ°Π½Π΅Π»Ρ panel.add(bt1); panel.add(bt2); panel.add(bt3); panel.add(bt31); panel.add(bt4); panel.add(bt5); panel.add(bt6); panel.add(bt61); panel.add(bt7); panel.add(bt8); panel.add(bt9); panel.add(bt91); panel.add(bt10); panel.add(bt11); panel.add(bt13); panel.add(bt14); batton_equally.add(bt12); //ΡΠ²Π΅Ρ ΠΏΠ°Π½Π΅Π»ΠΈ panel.setBackground(Color.CYAN); //ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π½Π° ΠΏΠ°Π½Π΅Π»Ρ panel_text.add(jtextfield, BorderLayout.NORTH); //ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΏΠ°Π½Π΅Π»Ρ ΡΠ΅ΠΊΡΡΠ° Π½Π° ΡΠΎΡΠΌΡ jframe.add(panel_text, BorderLayout.NORTH); //ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΏΠ°Π½Π΅Π»Ρ ΠΊΠ½ΠΎΠΏΠΎΠΊ Π½Π° ΡΠΎΡΠΌΡ jframe.add(panel, BorderLayout.CENTER); jframe.add(batton_equally, BorderLayout.SOUTH); //ΠΠΈΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠΎΡΠΌΡ jframe.setVisible(true); //ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠΎΠ±ΡΡΠΈΡ "ΠΠ°ΠΆΠ°ΡΠΈΠ΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ" //ActionListener - ΡΠ»ΡΡΠ°ΡΠ΅Π»Ρ bt1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { jtextfield.setText(jtextfield.getText() + "7"); } }); bt2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { jtextfield.setText(jtextfield.getText() + "8"); } }); bt3.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { jtextfield.setText(jtextfield.getText() + "9"); } }); bt4.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { jtextfield.setText(jtextfield.getText() + "4"); } }); bt5.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { jtextfield.setText(jtextfield.getText() + "5"); } }); bt6.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { jtextfield.setText(jtextfield.getText() + "6"); } }); bt7.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { jtextfield.setText(jtextfield.getText() + "1"); } }); bt8.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { jtextfield.setText(jtextfield.getText() + "2"); } }); bt9.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { jtextfield.setText(jtextfield.getText() + "3"); } }); bt10.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { jtextfield.setText(jtextfield.getText() + "."); } }); bt11.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { jtextfield.setText(jtextfield.getText() + "0"); } }); //ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° "C" ΡΠ΄Π°Π»ΡΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΠΈΡΡΡ bt31.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String temp = jtextfield.getText(); //ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ Π½Π΅ Π±ΡΠ»ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΡΠ΅ΡΠ΅ΡΡ ΠΏΡΡΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ try { jtextfield.setText(temp.substring(0, temp.length() - 1)); } catch (Exception e1) { jtextfield.setText(jtextfield.getText() + "ΠΡΡΡΠΎ!"); //jtextfield.setForeground(Color.RED); //bug } } }); // Π Π°Π±ΠΎΡΠ°Π΅ΠΌ Ρ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ // ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ Π΅Π³ΠΎ, ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ first_value ΠΈ // ΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡ ΡΠΈΡΠ»ΠΎ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° Π½ΠΎΠ²ΠΎΠ³ΠΎ bt14.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { try { first_value[0] = Double.valueOf(jtextfield.getText()); }catch (Exception e1) {} jtextfield.setText(""); operation[0] = "-"; } }); bt61.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { try { first_value[0] = Double.valueOf(jtextfield.getText()); } catch (Exception e1) {} jtextfield.setText(""); operation[0] = "/"; } }); bt91.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { try { first_value[0] = Double.valueOf(jtextfield.getText()); }catch (Exception e1) {} jtextfield.setText(""); operation[0] = "*"; } }); bt13.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { try { first_value[0] = Double.valueOf(jtextfield.getText()); }catch (Exception e1) {} jtextfield.setText(""); operation[0] = "+"; } }); // ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΡΠ°Π²Π½ΠΎ, ΡΡΠΈΡΠ°Π΅ΠΌ Π²ΡΠΎΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ bt12.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { try { double secondValue = Double.valueOf(jtextfield.getText()); if ("+".equals(operation[0])) { jtextfield.setText((first_value[0] + secondValue) + ""); } if ("-".equals(operation[0])) { jtextfield.setText((first_value[0] - secondValue) + ""); } if ("/".equals(operation[0])) { jtextfield.setText((first_value[0] / secondValue) + ""); } if ("*".equals(operation[0])) { jtextfield.setText((first_value[0] * secondValue) + ""); } }catch (Exception e1) {} } }); Pattern p = Pattern.compile("[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*([+-\\\\*/])\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?$"); Matcher m = p.matcher(jtextfield.setText(jtextfield.getText())); return m.matches(); } public static void main(String[] args) { new Calculator(); } }