用JAVA编写一个计算器的程序,实现加减乘除清零功能

用C语言怎样实现计算器加减乘除功能?~

我学c++时写的
#include #include "string" int count(int a,int b,char c) { if(c=='+') return a+b; if(c=='-') return a-b; if(c=='/') return a/b; if(c=='*') return a*b; } void main() { char str[100]; cin>>str; int number[10]={0}; char sign[10]; int i,j=0,k=0,m; int strlong=strlen(str);//#include "string" cout='0'&&str[i]<='9') number[j]=number[j]*10+str[i]-48; else {j++; sign[k]=str[i]; k++;} } j++; //cout<<j<<k; for(i=0;i<j;i++) cout<<number[i]<<endl; for(i=0;i<k;i++) cout<<sign[i]<<endl; for( i=0;i<k;i++) { if(sign[i]=='/'||sign[i]=='*') {number[i]=count(number[i],number[i+1],sign[i]); cout<<number[i]; for(m=i;m<k-i;m++) {sign[m]=sign[m+1];number[m+1]=number[m+2];} k--;i--;} } for( i=0;i<k;i++) { if(sign[i]=='+'||sign[i]=='-') {number[i]=count(number[i],number[i+1],sign[i]); cout<<number[i]; for(m=i;m<k-i;m++) {sign[m]=sign[m+1];number[m+1]=number[m+2];} k--;i--;} } for (i=0;i<3;i++) {cout<<number[i]; } cout<<k; }

2.堆栈
#include "string" #include "iostream" #include #include #include using namespace std; //自定义类型 用于存储 两种数据类型 class newType { public: bool flag;//true 为f false 为 c union { float f; char c; }data; }; //将字符串转换为 数字数组和字符数组 (通用提取字符串中数字) bool couvert(string str,vector &numbers,vector &chars,vector &all)//这里要使用引用 { int len=str.length(); bool flag=true; int pos=0; for(int i=0;i='0'&&str[i] numbers, vector chars,float &value) { //计算四者表达式 无括号类型 1+2*3+4 int ii=0; //先计算乘除 while(ii all,float &value) { int pos=0; vector numbers; vector chars; float va=0; for(int i=0;i numbers; vector chars; vector all; couvert(str, numbers, chars,all); for(int i=0;i<all.size();i++) { if (all[i].flag) { cout<<all[i].data.f<<" "; } else { cout<<all[i].data.c<<" "; } } float value,value1; // calculate(numbers,chars,value); calculate1(all,value1); cout<<value1; }

这是我翻家底找到的 .

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;
public class Jisuan extends JFrame implements ActionListener{
private JTextField reasult;
private JButton btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9,btn0,
btnAC,btnAdd,btnSub,btnReasult,btnD,
btnAbout,btnCancel;
private boolean add,sub,end,s,c;
private String str;
private double num1,num2;
public Jisuan(){
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JPanel p3=new JPanel();
TitledBorder tb=new TitledBorder("输出"); tb.setTitleColor(Color.BLUE);

btnAbout=new JButton(" 关于 ");
btnCancel=new JButton("Cancel");
btnCancel.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ee)
{
System.exit(0);
}
});
btnAbout.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ee)
{
JOptionPane.showMessageDialog(null,"无",
"消息",JOptionPane.INFORMATION_MESSAGE);
}
});
p3.add(btnAbout);
p3.add(btnCancel);
//JPanel p4=new JPanel();
//JPanel p5=new JPanel();
//reasult.setBorder(tb);
reasult =new JTextField("0",20);
reasult.setEditable(false);
reasult.setHorizontalAlignment(JTextField.RIGHT);
reasult.setForeground(Color.BLUE);

p1.setBorder(tb);
p1.add(reasult);


btn0=new JButton("0"); btn0.addActionListener(this);
btn1=new JButton("1"); btn1.addActionListener(this);
btn2=new JButton("2"); btn2.addActionListener(this);
btn3=new JButton("3"); btn3.addActionListener(this);
btn4=new JButton("4"); btn4.addActionListener(this);
btn5=new JButton("5"); btn5.addActionListener(this);
btn6=new JButton("6"); btn6.addActionListener(this);
btn7=new JButton("7"); btn7.addActionListener(this);
btn8=new JButton("8"); btn8.addActionListener(this);
btn9=new JButton("9"); btn9.addActionListener(this);
btnD=new JButton("."); btnD.addActionListener(this); btnD.setForeground(Color.RED);
btnAC=new JButton("AC"); btnAC.addActionListener(this); btnAC.setBackground(Color.PINK);
btnAdd=new JButton("+"); btnAdd.addActionListener(this); btnAdd.setForeground(Color.BLUE);
btnSub=new JButton("—"); btnSub.addActionListener(this); btnSub.setForeground(Color.BLUE);
btnReasult=new JButton("="); btnReasult.addActionListener(this); btnReasult.setForeground(Color.RED);

p2.add(btn1);p2.add(btn2);p2.add(btn3);p2.add(btn4);p2.add(btn5);
p2.add(btn6);p2.add(btn7);p2.add(btn8);p2.add(btn9);p2.add(btn0);
p2.add(btnD);p2.add(btnAC);p2.add(btnAdd);p2.add(btnSub);p2.add(btnReasult);
p2.setLayout(new GridLayout(5,3));

add(p1,BorderLayout.NORTH);
add(p2,BorderLayout.CENTER);
add(p3,BorderLayout.SOUTH);

}
public void num(int i){
String s = null;
s=String.valueOf(i);
if(end){
//如果数字输入结束,则将文本框置零,重新输入
reasult.setText("0");
end=false;

}
if((reasult.getText()).equals("0")){
//如果文本框的内容为零,则覆盖文本框的内容
reasult.setText(s);
}

else{
//如果文本框的内容不为零,则在内容后面添加数字
str = reasult.getText() + s;
reasult.setText(str);

}
}/*
String s=null;
s=String.valueOf(i);
str=reasult.getText()+s;
reasult.setText(str);
}*/
public void actionPerformed(ActionEvent e){
if(e.getSource()==btn1)
num(1);
else if(e.getSource()==btn2)
num(2);
else if(e.getSource()==btn3)
num(3);
else if(e.getSource()==btn4)
num(4);
else if(e.getSource()==btn5)
num(5);
else if(e.getSource()==btn6)
num(6);
else if(e.getSource()==btn7)
num(7);
else if(e.getSource()==btn8)
num(8);
else if(e.getSource()==btn9)
num(9);
else if(e.getSource()==btn0)
num(0);
else if(e.getSource()==btnAdd){
sign(1);
btnD.setEnabled(true);
}
else if(e.getSource()==btnSub){
sign(2);
btnD.setEnabled(true);
}
else if(e.getSource()==btnAC){
btnD.setEnabled(true);
reasult.setText("0");
}

else if(e.getSource()==btnD){
str=reasult.getText();
str+=".";
reasult.setText(str);
btnD.setEnabled(false);
}
else if(e.getSource()==btnReasult){

btnD.setEnabled(true);
num2=Double.parseDouble(reasult.getText());

if(add){
num1=num1 + num2;}
else if(sub){
num1=num1 - num2;}

reasult.setText(String.valueOf(num1));
end=true;
}


}
public void sign(int s){
if(s==1){
add=true;
sub=false;

}
else if(s==2){
add=false;
sub=true;

}

num1=Double.parseDouble(reasult.getText());
end=true;
}
public static void main(String[] args){
Jisuan j=new Jisuan();
j.setTitle("+/-简易计算器");
j.setLocation(500,280);
j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
j.setResizable(false);
j.pack();
j.setVisible(true);
}
}
没写乘法,你自其实从网上搜索就能搜出来现成代码

楼上这位的 程序基本正确,但有一个bug,就是输入小数时的bug

计算任何数后,按 ac, 然后再输入小数会出问题.
做如下修改

if (btn == clear) {
operation.setText("0");
dotExist = false;
operated = false;// 加入此句
storedNumber = 0;
lastOperator = '?';
}

不知道是否考虑过极大数的加减乘除等功能

import java.awt.*;
import java.awt.event.*;

public class CalcAppDemo extends Frame{
private TextField t_result;
private Panel p_main; //主面板
private Panel p_num; //数字面板
private Panel p_oper; //操作符面板
private Panel p_show; //显示面板
private Button b_num[]; //数字按钮
private Button b_oper[]; //操作符面板

public CalcAppDemo(String title){
setTitle(title);
t_result = new TextField("0.0", 21);
p_main = new Panel();
p_num = new Panel();
p_oper = new Panel();
p_show = new Panel();
p_main.setLayout(new BorderLayout());
p_num.setLayout(new GridLayout(4, 3, 1, 1));
p_oper.setLayout(new GridLayout(4, 2, 1, 1));

b_num = new Button[12];
for(int i=0; i<9; i++)
{
b_num = new Button(new Integer(i+1).toString());
}
b_num[9] = new Button("0");
b_num[10] = new Button("cls");
b_num[11] = new Button(".");
for(int i=0; i<12; i++)
{
p_num.add(b_num);
}

b_oper = new Button[8];
b_oper[0] = new Button("+");
b_oper[1] = new Button("-");
b_oper[2] = new Button("*");
b_oper[3] = new Button("/");
b_oper[4] = new Button("pow");
b_oper[5] = new Button("sqrt");
b_oper[6] = new Button("+/-");
b_oper[7] = new Button("=");
for(int i=0; i<8; i++) //
{
p_oper.add(b_oper);
}

t_result.setEditable(false);
p_show.add(t_result, BorderLayout.NORTH);
p_main.add(p_show, BorderLayout.NORTH);
p_main.add(p_num, BorderLayout.WEST);
p_main.add(p_oper, BorderLayout.EAST);
this.add(p_main, BorderLayout.CENTER);
setSize(400, 400);
setResizable(false);
pack();

this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
ButtonListener b1 = new ButtonListener();
for(int i=0; i<12; i++)
{
b_num.addActionListener(b1);
}
for(int i=0; i<8; i++)
{
b_oper.addActionListener(b1);
}
}

class ButtonListener implements ActionListener
{
private String lastOp; //存储上一此操作符
private String strVal; //存储数字对应的字符串
private double total; //总数
private double number; //存储新输入的数
private boolean firsttime; //判断是否第一次按下的是操作符按钮
private boolean operatorPressed;//判断是否已经按过操作符按钮

ButtonListener()
{
firsttime = true;
strVal = "";
}

//事件处理器
public void actionPerformed(ActionEvent e)
{
String s = ((Button)e.getSource()).getLabel().trim();

if(Character.isDigit(s.charAt(0)))
{//判断是操作数还是操作符
handleNumber(s);
}
else
{
calculate(s);
}
}

//判断是一元操作符还是二元操作符,并根据操作符类型做计算
void calculate(String op)
{
operatorPressed = true;

if(firsttime&&! isUnary(op))
{
total = getNumberOnDisplay();
firsttime = false;
}
if(isUnary(op))
{
handleUnaryOp(op);
}
else if(lastOp != null)
{
handleBinaryOp(lastOp);
}
if(! isUnary(op))
{
lastOp = op;
}
}

//判断是否一元操作符
boolean isUnary(String s)
{
return s.equals("=")
||s.equals("cls")||s.equals("sqrt")
||s.equals("+/-")||s.equals(".");
}

//处理一元操作符
void handleUnaryOp(String op)
{
if(op.equals("+/-"))
{//
number = negate(getNumberOnDisplay() + "");
t_result.setText("");
t_result.setText(number + "");
return;
}else if(op.equals("."))
{
handleDecPoint();
return;
}else if(op.equals("sqrt"))
{
number = Math.sqrt(getNumberOnDisplay());
t_result.setText("");
t_result.setText(number + "");
return;
}else if(op.equals("="))
{//
if(lastOp!= null && !isUnary(lastOp))
{
handleBinaryOp(lastOp);
}
lastOp = null;
firsttime = true;
return;
}else
{
clear();
}
}

//处理二元运算符
void handleBinaryOp(String op)
{
if(op.equals("+"))
{
total +=number;
}else if(op.equals("-"))
{
total -=number;
}else if(op.equals("*"))
{
total *=number;
}else if(op.equals("/"))
{
try
{
total /=number;
}catch(ArithmeticException ae){}
}else if(op.equals("pow"))
total = Math.pow(total, number);
//t_result.setText("");
lastOp = null;
// strVal = "";
number = 0;
t_result.setText(total + "");
}

//该方法用于处理数字按钮
void handleNumber(String s)
{
if(!operatorPressed)
{
strVal += s;
}else
{
operatorPressed = false;
strVal = s;
}
//
number = new Double(strVal).doubleValue();
t_result.setText("");
t_result.setText(strVal);
}

//该方法用于按下"."按钮
void handleDecPoint()
{
operatorPressed = false;
//
if(strVal.indexOf(".")<0)
{
strVal += ".";
}
t_result.setText("");
t_result.setText(strVal);
}

//该方法用于将一个数求反
double negate(String s)
{
operatorPressed = false;
//如果是一个整数,去掉小数点后面的0
if(number == (int)number)
{
s = s.substring(0,s.indexOf("."));
}

//如果无"-"增加在该数的前面
if(s.indexOf("-")<0)
{
strVal = "-" + s;
}
else
{
strVal = s.substring(1);
}
return new Double(strVal).doubleValue();
}

//将显示框中的值转换成Double
double getNumberOnDisplay()
{
return new Double(t_result.getText()).doubleValue();
}

//清除屏幕并设置所有的标识
void clear()
{
firsttime = true;
lastOp = null;
strVal = "";
total = 0;
number = 0;
t_result.setText("0");
}
}

public static void main(String[] args) {
CalcAppDemo c = new CalcAppDemo("简单的计算器程序");
c.setVisible(true);
}

}

编写一个JAVA计算器程序
答://创建一个空字符串缓冲区 str=new StringBuffer(); //添加面板p0中的组件和设置其在框架中的位置和大小 p0.add(tf1); p0.setBounds(10,25,300,40); //添加面板p1中的组件和设置其在框架中的位置和大小 p1.setLayout(gl1); p1.add(tf2); p1.add(b0); p1.add(b1); p1.add(b2); p1.setB...

用JAVA创建一个类似于简单计算器的应用程序
答:import java.awt.*;import java.awt.event.*;public class jisuanqi extends WindowAdapter { Panel p1 = new Panel();Panel p2 = new Panel();Panel p3 = new Panel();TextField txt;private Button[] b = new Button[17];private String ss[] = { "7", "8", "9", "+", "4",...

如何用JAVA语言编写计算器小程序?
答:public class Calculator extends JFrame implements ActionListener { private JFrame jf;private JButton[] allButtons;private JButton clearButton;private JTextField jtf;public Calculator() { //对图形组件实例化 jf=new JFrame("任静的计算器1.0:JAVA版");jf.addWindowListener(new WindowAdap...

求一计算器java代码,最好简单一点(图形界面)
答:Frame fm = new Frame("简单计算器"); for (int i = 0; i <= 16; i++) { b[i] = new Button(ss[i]); } for (int i = 0; i <= 15; i++) { p2.add(b[i]); } //创建按钮 并添加到P2 b[16].setBackground(Color.yellow); txt = new TextField(15); txt.setEditable(fal...

Java程序编写一个计算器类,要求实现加、减、乘、除运算,注意在进行除 ...
答:JButton bCancel; //清除按钮private JButton[] b=new JButton[16]; //构造按钮数组private char LastOp; //操作符号private boolean Countable; //用于判断是否可计算private String KeyLabel[]={"7","8","9","/","4","5","6","*","1","2","3","-","0","."...

用JAVA编写一个简单的计算器,要求如下:
答:以下是上图计算器的代码:package Computer;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.Font;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Stack;import javax.swing.JApplet;i...

java编写一个计算器类
答:java编写一个计算器类,包含三个属性:数字a,数字b和结果result,其中a和b为int类型,result为double类型。计算器对象拥有4个方法:sum,sub,mult,div,分别实现加,减,乘和除的功能... java编写一个计算器类,包含三个属性:数字a,数字b和结果result,其中a和b为int类型,result为double类型。计算器对象拥有4个方法:...

用JAVA制作一个简单计算器
答:用JAVA制作一个简单计算器 需求说明:写一个简单计算器程序,该计算器支持五种运算:加、减、乘、除和求余,分别用“+”、“-”、“*”、“/”及“%”表示。用户可以输入数值及运算符号,然后点击“计算”按钮,... 需求说明:写一个简单计算器程序,该计算器支持五种运算:加、减、乘、除和求余,分别用“+”...

java:编写一个计算器小程序,要求可以做加减乘除运算
答:private void handleC() // 初始化计算器的各种值 { text_double.setText("0");firstDigit = true;operator = "=";} private void handleNumber(String button) { if (firstDigit)//输入的第一个数字 { text_double.setText(button);} else if ((button.equals(".")) && (text_doub...

java计算器编程!!急急急!
答:java计算器编程!!急急急! 80 .利用GUI方式编写一个简易计算器,实现求反、加、除等运算功能。具体要求如下:(1)输入的数要满足既可以是整数,也可是实数;(2)上述运算功能要求利用函数,并利用多态形式;(3)... .利用GUI方式编写一个简易计算器,实现求反、加、除等运算功能。具体要求如下:(1)输入的数要满足...

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网