Калькулятор на Java
Мы должны написать программу на Java таким образом, чтобы она создавала калькулятор, который позволяет выполнять основные операции сложения, вычитания, умножения и деления.
Ожидаемые входные и выходные данные
Для создания калькулятора мы можем иметь следующие различные наборы входных и выходных данных.
Сложение:
При вводе выражения сложения «98+102» ожидается, что результат будет отображаться как «98+102=200,0».
Вычитание:
При вводе выражения вычитания «200.0-58.75» ожидается, что результат будет отображаться как «200.0-58.75=141.25».
Умножение:
При вводе выражения умножения «141.25*20» ожидается, что результат будет отображаться как «141.25*20=2825.0».
Для выполнения деления : Когда знаменатель не равен нулю
При вводе выражения деления «2825.0/5» ожидается, что результат будет отображаться как «2825.0/5=565.0».
Для выполнения деления : Когда знаменатель равен нулю
При вводе выражения деления «565.0/0» ожидается, что ошибка будет отображаться как «565.0/0=Нулевая Ошибка деления».
Решение проблемы
- Создайте текстовое поле для принятия выражения и отображения выходных данных.
- Создайте кнопки для цифр и десятичной точки.
- Создайте кнопку, чтобы очистить полное выражение.
- Создайте кнопки для операций, то есть для сложения, вычитания, умножения и деления, а также кнопку равенства для вычисления результата.
- Добавьте ActionListener ко всем кнопкам.
- Вычислите результат и отобразите его в текстовом поле.
Программа/Исходный Код
Вот исходный код Java-программы для создания базового калькулятора. Программа успешно скомпилирована и протестирована с помощью компилятора. Выходные данные программы также показаны ниже.
/*Программа для демонстрации базового калькулятора с помощью апплета*/
importjava.awt.*;
importjava.applet.*;
importjava.awt.event.*;
public class Калькулятор расширяет апплет и реализует ActionListener
{
TextFieldinp;
//Функция добавления объектов в кадр
publicvoidinit()
{
setBackground(Color.black);
setLayout(null);
int i;
inp = new TextField();
inp.setBounds(150,100,270,50);
this.add(inp);
Button button[] = new Button[10];
for(i=0;i<10;i++)
{
button[i] = new Button(String.valueOf(9-i));
button[i].setBounds(150+((i%3)*50),150+((i/3)*50),50,50);
this.add(button[i]);
button[i].addActionListener(this);
}
Button dec=new Button(«.»);
dec.setBounds(200,300,50,50);
this.add(dec);
dec.addActionListener(this);Button clr=new Button(«C»);
clr.setBounds(250,300,50,50);
this.add(clr);
clr.addActionListener(this);Button operator[] = new Button[5];
operator[0]=new Button(«/»);
operator[1]=new Button(«*»);
operator[2]=new Button(«-«);
operator[3]=new Button(«+»);
operator[4]=new Button(«=»);
for(i=0;i<4;i++)
{
operator[i].setBounds(300,150+(i*50),50,50);
this.add(operator[i]);
operator[i].addActionListener(this);
}
operator[4].setBounds(360,310,80,60);
this.add(operator[4]);
operator[4].addActionListener(this);
}
String number1=»»;
String op=»»;
String number2=»»;
//Функция для вычисления выражения
public void actionPerformed(ActionEvent e)
{
String button = e.getActionCommand();
charch = button.charAt(0);
if(ch>=’0′ &&ch<=’9’|| ch==’.’)
{
if (!op.equals(«»))
number2 = number2 + button;
else
number1 = number1 + button;
inp.setText(number1+op+number2);
}
else if(ch==’C’)
{
number1 = op = number2 = «»;
inp.setText(«»);
}
else if (ch ==’=’)
{
if(!num1.equals(«») && !number2.equals(«»))
{
double temp;
double n1=Double.parseDouble(number1);
double n2=Double.parseDouble(number2);
if(n2==0 &&op.equals(«/»))
{
inp.setText(number1+op+number2+» = Ошибка деления на ноль»);
number1 = op = number2 = «»;
}
else
{
if (op.equals(«+»))
temp = n1 + n2;
else if (op.equals(«-«))
temp = n1 — n2;
else if (op.equals(«/»))
temp = n1/n2;
else
temp = n1*n2;
inp.setText(num1+op+num2+» = «+temp);
num1 = Double.toString(temp);
op = num2 = «»;
}
}
else
{
num1 = op = num2 = «»;
inp.setText(«»);
}
}
else
{
if (op.equals(«») || number2.equals(«»))
op = button;
else
{
double temp;
double n1=Double.parseDouble(number1);
double n2=Double.parseDouble(number2);
if(n2==0 &&op.equals(«/»))
{
inp.setText(number1+op+number2+» = Zero Division Error»);
number1 = op = number2 = «»;
}
else
{
if (op.equals(«+»))
temp = n1 + n2;
else if (op.equals(«-«))
temp = n1 — n2;
else if (op.equals(«/»))
temp = n1/n2;
else
temp = n1*n2;
number1 = Double.toString(temp);
op = button;
number2 = «»;
}
}
inp.setText(number1+op+number2);
}
}
}
/*
<applet code = Calculator.class width=600 height=600>
</applet>
*/
Объяснение программы
- При нажатии любой кнопки на калькуляторе вызывается функция actionPerformed. Получите кнопку, нажатую с помощью getActionCommand.
- Если нажатая кнопка представляет собой цифру или десятичную точку, то выполняется одно из следующих действий :
а) Цифра соединяется со вторым числом, если оператор не был встречен.
б) В противном случае цифра соединяется с первым числом. - Если кнопка находится на кнопку «очистить», затем очистить поле ввода.
- Если нажатая кнопка является оператором equals, то выполняется одно из следующих действий :
а) Если ни первое, ни второе число не пусто, то вычислите результат и отобразите его в кадре
б) В противном случае очистите поле ввода. - При нажатии любой из кнопок {+,-,*,/} выполняется одно из следующих действий :
а) Если либо оператор, либо второй номер пуст, то установите нажатую кнопку в качестве оператора.
б) В противном случае вычислите результат и отобразите его в кадре.