如何用JAVA编写计算器?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用JAVA编写计算器?相关的知识,希望对你有一定的参考价值。

参考技术A package Test;

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

import javax.swing.*;
public class Calculator extends JFrame
private float op1,op2;//定义两个变量存放需要运算的值
private String str="";//定义str去和text进行交叉赋值
private String opr,co;//opr存放符合,co用来存放复制的内容
private double re;//用来存放运算的结果
private boolean bo=false;//是否进行了+-*/运算
private boolean btime=false;//时间开关
Container contentpane=this.getContentPane();
JPanel panel1=new JPanel(new BorderLayout()),
panel2=new JPanel(new FlowLayout()),
panel3=new JPanel(new GridLayout(4,5)),
panel4=new JPanel(new BorderLayout()),
panel5=new JPanel(new BorderLayout());
//菜单栏
JMenuBar menubar=new JMenuBar();
JMenu edit=new JMenu("编辑(E)"),
find=new JMenu("查看(V)"),
help=new JMenu("帮助(H)");
JMenuItem copy=new JMenuItem("复制(C)",'C'),
paste=new JMenuItem("粘贴(P)",'P'),
standard=new JMenuItem("标准型(T)",'T'),
science=new JMenuItem("科学型(S)",'S'),
numarray=new JMenuItem("数字分组(I)",'I'),
helptopic=new JMenuItem("帮助主题(H)",'H'),
aboutcal=new JMenuItem("关于计算器(A)",'A');
//输入文本框
JTextField text=new JTextField(25);
//数字键
JButton one=new JButton("1"),
two=new JButton("2"),
three=new JButton("3"),
four=new JButton("4"),
five=new JButton("5"),
six=new JButton("6"),
seven=new JButton("7"),
eight=new JButton("8"),
nine=new JButton("9"),
zero=new JButton("0");
//功能键
JButton division=new JButton("/"),
multiply=new JButton("*"),
addition=new JButton("+"),
subtration=new JButton("-"),
sqrt=new JButton("sqrt"),
residual=new JButton("%"),
sign=new JButton("+/-"),
dot=new JButton("."),
reciprocal=new JButton("1/X"),
amount=new JButton("="),
backspace=new JButton("Backspace"),
ce=new JButton("CE"),
c=new JButton("C"),
time=new JButton("time");
public Calculator()
contentpane.setLayout(new BorderLayout());
//textField文本从右边开始写
text.setHorizontalAlignment(SwingConstants.RIGHT);
text.setText("0.");
//菜单栏添加
edit.add(copy);
edit.add(paste);
find.add(standard);
find.add(science);
find.addSeparator();
find.add(numarray);
help.add(helptopic);
help.addSeparator();
help.add(aboutcal);
//把组件添加至容器中
menubar.add(edit);
menubar.add(find);
menubar.add(help);
panel1.add(menubar,"North");
panel1.add(text,"West");
//添加数字、功能键至panel2、panel3
panel2.add(backspace);
panel2.add(ce);
panel2.add(c);
panel2.add(time);

panel3.add(seven);
panel3.add(eight);
panel3.add(nine);
panel3.add(division);
panel3.add(sqrt);
panel3.add(four);
panel3.add(five);
panel3.add(six);
panel3.add(multiply);
panel3.add(residual);
panel3.add(one);
panel3.add(two);
panel3.add(three);
panel3.add(subtration);
panel3.add(reciprocal);
panel3.add(zero);
panel3.add(sign);
panel3.add(dot);
panel3.add(addition);
panel3.add(amount);

panel4.add(panel2,"North");
panel4.add(panel3,"West");

panel5.add(panel1,"North");
panel5.add(panel4,"West");
contentpane.add(panel5,"North");
//事件
//助记符
edit.setMnemonic('E');
find.setMnemonic('V');
help.setMnemonic('H');
//快捷键
KeyStroke kcopy=KeyStroke.getKeyStroke(KeyEvent.VK_C,Event.CTRL_MASK);
copy.setAccelerator(kcopy);
KeyStroke kpaste=KeyStroke.getKeyStroke(KeyEvent.VK_V,Event.CTRL_MASK);
paste.setAccelerator(kpaste);
//0-9、.的显示事件
actionlistener1 al1=new actionlistener1();
one.addActionListener(al1);
two.addActionListener(al1);
three.addActionListener(al1);
four.addActionListener(al1);
five.addActionListener(al1);
six.addActionListener(al1);
seven.addActionListener(al1);
eight.addActionListener(al1);
nine.addActionListener(al1);
//小数点的ActionListener事件
dot.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
int count;
count=str.length();
//1.第一位就为.时改变text中内容为:"0."
if(count==0)
str="0.";
text.setText(str);

//2.不可以重复按"."
else if(!str.contains("."))
str+=".";
text.setText(str);

else
System.out.println("您再点的话,输入的将不再是小数了!");


);
//如果第一位是0那么第二位就不可以为0
zero.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
int count;
count=str.length();
if(bo)
if(!(str.contains("0")&&count==1))
str="";
str+="0";
text.setText(str);
else
System.out.println("您再点的话,输入的将不再是数字了!");

else
if(!(str.contains("0")&&count==1))
str+="0";
text.setText(str);
else
System.out.println("您再点的话,输入的将不再是数字了!");

bo=false;

);
//+、-、*、/、%运算
actionlistener3 al3=new actionlistener3();
addition.addActionListener(al3);
subtration.addActionListener(al3);
multiply.addActionListener(al3);
division.addActionListener(al3);
residual.addActionListener(al3);
//CE和C清空按钮时间
actionlistener2 al2=new actionlistener2();
ce.addActionListener(al2);
c.addActionListener(al2);
//退格键
backspace.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
int count;
count=str.length()-1;
if(bo==false)
if(count>=0)
str=str.substring(0,count);
text.setText(str);

else
text.setText("0.");
else
System.out.println("您现在正进行法则运算!");

);
//求平方根
sqrt.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
int count;
count=str.length();
if(count!=0)
op1=Float.parseFloat(text.getText());
re=Math.sqrt(op1);
String str1=String.valueOf(re);
text.setText(str1);
str="";

else
System.out.println("您现在的按sqrt键毫无意义");

);
//求倒数
reciprocal.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
int count;
count=str.length();
if(count!=0)
op1=Float.parseFloat(text.getText());
if(op1!=0)
re=1/op1;
String str1=String.valueOf(re);
text.setText(str1);
str=str1;

else
text.setText("除数不可以为0的");
str="";


else
System.out.println("您现在的按1/X键毫无意义");

);
//=事件
amount.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
op2=Float.parseFloat(str);
//需判断进行那种运算法则
if(opr=="+")//加法运算
re=op1+op2;
String str1=String.valueOf(re);
text.setText(str1);
str=String.valueOf(re);
else
if(opr=="-")//减法运算
re=op1-op2;
String str1=String.valueOf(re);
text.setText(str1);
str=String.valueOf(re);
else
if(opr=="*")//乘法运算
re=op1*op2;
String str1=String.valueOf(re);
text.setText(str1);
str=String.valueOf(re);
else
if(opr=="/"&&op2!=0)//除法运算
re=op1/op2;
String str1=String.valueOf(re);
text.setText(str1);
str=String.valueOf(re);
else
if(opr=="%")//取余运算
re=op1%op2;
String str1=String.valueOf(re);
text.setText(str1);
str="";

else if(op2==0)
text.setText("除数不可以为0的");
str="";





//打印看看
System.out.print(op1);
System.out.print(opr);
System.out.print(op2+"=");
System.out.print(re);
System.out.println();

);
//复制事件
copy.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
int count;
count=str.length();
if(count!=0)
co=text.getText();

else
System.out.println("没有可复制的对象");

);
//粘贴事件
paste.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
str=co;
text.setText(str);

);
//时间事件
time.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
if(btime==false)
String st=(new Date()).toString();
text.setText(st);
str="";
btime=true;

else
text.setText(str);
btime=false;


);
//+/-事件
sign.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
int a=Integer.valueOf(str);
a=a*(-1);
str=String.valueOf(a);
text.setText(str);

);

//定义1-9按钮在text中显示的内部类
class actionlistener1 implements ActionListener
public void actionPerformed(ActionEvent e)
JButton button=(JButton)e.getSource();
String btext=button.getText();
//如果第一位为0再输入其他非零的整数时将零忽略
if(bo)
if(str.indexOf("0")==0&&str.length()==1)
str="";
str+=btext;
text.setText(str);
else
str="";
str+=btext;
text.setText(str);
else
if(str.indexOf("0")==0&&str.length()==1)
str="";
str+=btext;
text.setText(str);
else
str+=btext;
text.setText(str);


bo=false;


//定义清空text中内容的内部类
class actionlistener2 implements ActionListener
public void actionPerformed(ActionEvent e)
str="";
text.setText("0.");


//定义+、-、*、/、%运算的内部类
class actionlistener3 implements ActionListener
public void actionPerformed(ActionEvent e)
int count;

count=str.length();
if(count!=0)
JButton button=(JButton)e.getSource();
opr=button.getText();
op1=Float.parseFloat(str);
bo=true;

else
System.out.println("您现在的按键毫无意义!");


public static void main(String[] args)
Calculator cc=new Calculator();
cc.pack();
cc.setResizable(false);//不可最大化
cc.setVisible(true);
cc.setTitle("计算器");
cc.setDefaultCloseOperation(EXIT_ON_CLOSE);
Dimension scmsize=Toolkit.getDefaultToolkit().getScreenSize();
int w=cc.getSize().width;
int h=cc.getSize().height;
int x=(scmsize.width-w)/2;
int y=(scmsize.height-h)/2;
cc.setLocation(x, y);

参考技术B 见百度百科 参考技术C

http://zhidao.baidu.com/question/180533543.html

请问如何用Java编写一个汽车类Car

编写一个汽车类Car,具有属性:
String color;//车的颜色
int door;//车门数量
float speed;//车的速度
编写一个无参构造方法,构造对象的同时给各属性赋值。
public Car()
//请填写相应的代码

编写一个具有3个参数的构造方法
public Car(String color,int door,float speed)
//请填写相应的代码

public void start()
//汽车启动。输出汽车已启动,并输出汽车的各个属性

public void speedUp(float speed)
//加速

public void shutDown(float speed)
//减速

public void brake()
//刹车

编写一个类Test,测试上面的汽车类。

public class Car

private String color;//颜色

private int door;//车门数量

private float speed;//车速

public Car()

this.color = "红色";

this.door = 3;

this.speed = 110;

public Car(String color, int door, float speed)

this.color = color;

this.door = door;

this.speed = speed;

public void start()

//汽车启动。输出汽车已启动,并输出汽车的各个属性

System.out.println("汽车已启动,汽车颜色为"+color+",车门数为"+door+",车速为"+speed);

public void speedUp(float speed)

//加速

System.out.println("汽车加速到"+speed+"km/h");

public void shutDown(float speed)

//减速

System.out.println("汽车减速到"+speed+"km/h");

public void brake()

//刹车

System.out.println("已刹车");

public class Test

public static void main(String[] args)

Car car = new Car();

car.start();

car.speedUp(100);

car.shutDown(60);

car.brake();

Car car1 = new Car("白色",4,20.2F);

car1.start();

car1.speedUp(100);

car1.shutDown(60);

car1.brake();

运行结果

参考技术A public class CarInfo
 private String color;
 private int door;
 private float speed;
 
 CarInfo()
     this.color="red";
     this.door=4;
     this.speed=80F;
 
 public void setColor(String color)
     this.color=color;
 
 public String getColor()
     return this.color;
 
 public void setDoor(int door)
     this.door=door;
 
 public int getDoor()
     return this.door;
 
 public void setSpeed(float speed)
     this.speed=speed;
 
 public float getSpeed()
     return this.speed;
 

本回答被提问者采纳
参考技术B new this dian 参考技术C public class Car
// 请填写相应的代码
String color;// 车的颜色
int door;// 车门数量
float speed;// 车的速度
// 编写一个无参构造方法,构造对象的同时给各属性赋值。
public Car()
// 请填写相应的代码
color = "black";
door = 4;
speed = 120.0f;

// 编写一个具有3个参数的构造方法
public Car(String color, int door, float speed)
this.color = color;
this.door = door;
this.speed = speed;


public String getColor()
return color;

public void setColor(String color)
this.color = color;

public int getDoor()
return door;

public void setDoor(int door)
this.door = door;

public float getSpeed()
return speed;

public void setSpeed(float speed)
this.speed = speed;

public void start()
// 汽车启动。输出汽车已启动,并输出汽车的各个属性
System.out.println("汽车已启动...");
System.out.println("汽车的颜色:"+color+",汽车的门:"+door+",汽车的速度:"+speed);

public void speedUp(float speed)
// 加速
System.out.println("汽车正在加速。。。");

public void shutDown(float speed)
// 减速
System.out.println("汽车正在减速。。。");

public void brake()
// 刹车
System.out.println("汽车正在刹车。。。");

public static void main(String[] args)
Car car = new Car();
car.speedUp(car.getSpeed());
car.shutDown(car.getSpeed());
car.brake();

参考技术D public Car()
this.color='黑';
this.door=4;
this.speed=100;


编写一个具有3个参数的构造方法
public Car(String color,int door,float speed)
this.color=color;
this.door=door;
this.speed=speed;


public void start()
//汽车启动。输出汽车已启动,并输出汽车的各个属性
System.out.println("汽车启动");
System.out.println("颜色:"+this.color+"车门数量:"+this.door+"速度"+this,speed);

public void speedUp(float speed)
//加速
//传入的为增加的速度
this.speed=this.speed+speed;
//传入的为增加后的速度
this.speed=speed;


public void shutDown(float speed)
//减速
//传入的为的速度
this.speed=this.speed-speed;
//传入的为增加后的速度
this.speed=speed;

public void brake()
//刹车
this.speed=0;

以上是关于如何用JAVA编写计算器?的主要内容,如果未能解决你的问题,请参考以下文章

如何用eclipse编写java窗口程序

如何用java编写firebase云函数

请问如何用Java编写一个汽车类Car

如何用 Java 编写 RSS 提要?

用JavaScript编写计算日期

用java编写一个图片浏览器