Простой калькулятор на Java

Простой калькулятор на JavaПредставляю вам готовый калькулятор на Java. Просто скопируйте нижний код и вставьте его в ваш IDE Eclipse или NetBeans.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Calculator
{
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable()
        {
            public void run() {
                CalculatorFrame frame = new CalculatorFrame();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setVisible(true);
            }
        });
    }
}
class CalculatorFrame extends JFrame {
    public CalculatorFrame() {
        setTitle("Calculator");
        CalculatorPanel panel = new CalculatorPanel();
        add(panel);
        pack();
    }
}
class CalculatorPanel extends JPanel {
    public CalculatorPanel() {
        setLayout(new BorderLayout());

        result = 0;
        lastCommand = "=";
        start=true;

        display = new JButton("0");
        display.setEnabled(false);
        add(display, BorderLayout.NORTH);

        ActionListener insert = new InsertAction();
        ActionListener command = new CommandAction();

        panel = new JPanel();
        panel.setLayout(new GridLayout(4, 4));

        addButton("7", insert);
        addButton("8", insert);
        addButton("9", insert);
        addButton("/", command);

        addButton("4", insert);
        addButton("5", insert);
        addButton("6", insert);
        addButton("*", command);

        addButton("1", insert);
        addButton("2", insert);
        addButton("3", insert);
        addButton("-", command);

        addButton("0", insert);
        addButton(".", insert);
        addButton("=", command);
        addButton("+", command);

        add(panel, BorderLayout.CENTER);
    }
    private void addButton(String label, ActionListener listener) {
        JButton button = new JButton(label);
        button.addActionListener(listener);
        panel.add(button);
    }
    private class InsertAction implements ActionListener 
    {
        public void actionPerformed(ActionEvent event) 
        {
            String input = event.getActionCommand();
            if(start) {
                display.setText("");
                start = false;
            }
            display.setText(display.getText() + input);
        }
    }
    private class CommandAction implements ActionListener 
    {
        public void actionPerformed(ActionEvent event) 
        {
            String command = event.getActionCommand();
            if(start) 
            {
                if(command.equals("-")) 
                {
                    display.setText(command);
                    start = false;
                }
                else lastCommand = command;
            }
            else 
            {
                calculate(Double.parseDouble(display.getText()));
                lastCommand = command;
                start=true;
            }
        }   
    }
    public void calculate(double x)
    {
        if(lastCommand.equals("+")) result += x;
        else if(lastCommand.equals("-")) result -= x;
        else if(lastCommand.equals("*")) result *= x;
        else if(lastCommand.equals("/")) result /= x;
        else if(lastCommand.equals("=")) result = x;
        display.setText("" + result);
    }
    private JButton display;
    private JPanel panel;
    private double result;
    private String lastCommand;
    private boolean start;
}

Комментариев 31 на “Простой калькулятор на Java

  1. а как добавить кнопку очистки? ну чтобы введенные данные или результат удалялся

    • Alex прежде чем возникать посмотрите какого типа result в Java – double имеет такую особенность что при арифметических операциях он некоректно возвращает результат(типу 0.300000000004) если хотите норм результат объявите как BigDecimal и все будет в порядке.

      • И будет 0, тот еще эксперт я погляжу. Меняется не один параметр и не на BigDecimal, а на float.

  2. Это ж сколько мне еще учится что бы написать хотя бы такой калькулятор.
    Может ну ее эту яву?

    • Ну на сайте найдете много информации.
      Посетите рубрику “Java для начинающих”.

  3. Здравствуйте,помогите пожалуйста написать копию калькулятора windos 7, на среде программирования netbeans язык java , с использованием swing.

  4. Подскажите пожалуйста как сделать чтобы внесенные пользователем данные вносились в Базу Данных (н2 )
    Получилось только добавлять данные записанные в коде (использовал stmt.execute(“INSERT INTO lesson (nam , code ) VALUES (‘фио’, ‘имя’)” ) ,
    а из формы не получается.

  5. Так сейчас калькулятор любой сложности на http://formdesigner.ru/ сделать можно. Это онлайн конструктор веб-форм любой , я там себе опрос на сайт дела.

    • Спасибо, за ссылку. Интересный сервис, попробую на нем создать калькулятор.

  6. if(lastCommand.equals(“+”)) result += x;
    else if(lastCommand.equals(“-“)) result -= x;
    else if(lastCommand.equals(“*”)) result *= x;
    else if(lastCommand.equals(“/”)) result /= x;
    else if(lastCommand.equals(“=”)) result = x;

    За такое по рукам давать надо 🙂

  7. как исправить использование float ибо простой результат вычитания 2,3-0,3 выдает страшное число
    1,9999999999998

  8. import java.util.Scanner;

    public class Main{
    public static void main(String args[]){
    Scanner sc =new Scanner(System.in);
    int i =sc.nextInt();
    String a = sc.next();
    int j =sc.nextInt();
    if(a.equals(“/”)) {
    System.out.print(i / j);
    }
    if(a.equals(“*”)){
    System.out.print(i*j);
    }
    if(a.equals(“-“)) {
    System.out.print(i – j);
    }
    if(a.equals(“+”)) {
    System.out.print(i + j);
    }

    }
    }

    Не знаю, чи правильно але працює

  9. К черту этот джава, ну нафиг, “простой” калькулятор мне такому не научится ну к черту программирование сидел бы в html не высовывался.

  10. В вашей программе после нажатия кнопки “=” вы не сможете вычесть из результата новое значение.

  11. вставьте пожалуйста комментарии в код, у меня несколько другая структура кода, пытаюсь разобраться откуда идут корни того, что есть у вас и нет у меня..

  12. не претендую на гениальность (только учусь) – прошу конструктивной критики! Сделал округление до 2 знаков и кнопку очистки:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;

    public class Calculator {
    public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable()
    {
    public void run() {
    CalculatorFrame frame = new CalculatorFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    }
    });
    }
    }
    class CalculatorFrame extends JFrame {
    public CalculatorFrame() {
    setTitle(“Calculator 2.0”);
    CalculatorPanel panel = new CalculatorPanel();
    add(panel);
    pack();
    }
    }
    class CalculatorPanel extends JPanel {
    public CalculatorPanel() {
    setLayout(new BorderLayout());

    result = 0;
    lastCommand = “=”;
    start = true;

    display = new JButton(“0”);
    display.setEnabled(false);
    add(display, BorderLayout.NORTH);

    ActionListener insert = new InsertAction();
    ActionListener command = new CommandAction();

    panel = new JPanel();
    panel.setLayout(new GridLayout(4, 5));
    addButton(“”, command);
    addButton(“7”, insert);
    addButton(“8”, insert);
    addButton(“9”, insert);
    addButton(“/”, command);

    addButton(“”, command);
    addButton(“4”, insert);
    addButton(“5”, insert);
    addButton(“6”, insert);
    addButton(“*”, command);

    addButton(“”, command);
    addButton(“1”, insert);
    addButton(“2”, insert);
    addButton(“3”, insert);
    addButton(“-“, command);

    addButton(“Cl”, command);
    addButton(“0”, insert);
    addButton(“.”, insert);
    addButton(“=”, command);
    addButton(“+”, command);

    add(panel, BorderLayout.CENTER);
    }

    private void addButton(String label, ActionListener listener) {
    JButton button = new JButton(label);
    button.addActionListener(listener);
    panel.add(button);
    }

    private class InsertAction implements ActionListener {
    public void actionPerformed(ActionEvent event) {
    String input = event.getActionCommand();
    if (start) {
    display.setText(“”);
    start = false;
    }
    display.setText(display.getText() + input);
    }
    }

    private class CommandAction implements ActionListener {
    public void actionPerformed(ActionEvent event) {
    String command = event.getActionCommand();
    if (start) {
    if (command.equals(“Cl”)) {
    // display.setText(command);
    display.setText(“”);
    start = false;
    } else lastCommand = command;
    } else {
    calculate(Double.parseDouble(display.getText()));
    lastCommand = command;
    start = true;
    }
    }
    }

    public void calculate(double x) {

    switch (lastCommand)
    {
    case “+”: result=Math.rint((result + x)*100)/100; break;
    case “-“: result=Math.rint((result – x)*100)/100; break;
    case “*”: result=Math.rint((result * x)*100)/100; break;
    case “/”: result=Math.rint((result / x)*100)/100; break;
    case “=”: result = x; break;

    }
    display.setText(“” + result);
    }

    private JButton display;
    private JPanel panel;
    private double result;
    private String lastCommand;
    private boolean start;
    }

  13. Очень интересный материал!!!
    Во я полный дурак что не нашел ваш сайт сразу еще год назад, ой дураак.
    Спасибо очень! Поклон вам.

  14. всем привет!
    нужна помощь в создании калькулятора двоичных чисел
    кто может помочь или хотя б подсказать как это делать напишите мне пожалуйста в инстаграме @_olyezha_

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *