用java语言怎么编写计算器中的等号功能,使用户点击等号可以实现结果的输出

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用java语言怎么编写计算器中的等号功能,使用户点击等号可以实现结果的输出相关的知识,希望对你有一定的参考价值。

package 界面练习;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class 计算器6 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 计算器6()
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)
计算器6 cc=new 计算器6();
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);



希望对你有帮助!
参考技术A 写个button的监听器类(比如: class GetResultAction implements ActionListener),里面的public void actionPerformed(ActionEvent e)方法实现如下功能:
获取计算的结果,并在上方的显示窗口显示

你可以把GetResultAction类写成私有类(private class),放在计算器类里面,然后计算结果result,设置成计算器类的private field,然后就可以在actionPerformed方法中直接访问这个reuslt,并且把结果显示在显示窗口中
参考技术B 等号是一个按钮,可以添加鼠标监听事件,在监听事件里写计算方法 参考技术C 给等号加监听 处理结果输出

用java编写一个倒计时器代码。

要求:1.从60秒开始倒计时并显示在界面2中。
2.当等于0秒时,跳转到界面1。
3.当在界面2中点击按钮1进入界面3时,界面2中的倒计时会暂停(即进入界面3后不会跳转到界面1)
总得来说,就是类似ATM机上的倒计时功能。
对了。需要界面2跳转到界面1时,界面2会消失。

参考技术A import java.awt.BorderLayout;import java.awt.Container;import java.awt.Font;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;public class TimerDemo extends JFrame implements ActionListener private static final long serialVersionUID = 201306211111L; private JTextField screen = new JTextField("0"); private JButton start = new JButton("开始"); private JButton reset = new JButton("重置"); private JPanel panel = new JPanel(); private boolean isRunning; private int time; private int timeBetween; public TimerDemo(int timeBetween) super("计时器"); this.timeBetween = timeBetween; try init(); catch (Exception e) e.printStackTrace(); public TimerDemo() super("计时器"); this.timeBetween = 100; try init(); catch (Exception e) e.printStackTrace(); private void init() panel.setLayout(new GridLayout()); panel.add(start); panel.add(reset); start.addActionListener(this); reset.addActionListener(this); screen.setFont(new Font("幼圆", Font.BOLD, 60)); screen.setHorizontalAlignment(JTextField.CENTER); screen.setEditable(false); Container c = getContentPane(); c.setLayout(new BorderLayout()); c.add(panel, BorderLayout.SOUTH); c.add(screen, BorderLayout.CENTER); this.setSize(200, 150); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setResizable(false); this.setLocationRelativeTo(null); this.setVisible(true); public static void main(String[] args) new TimerDemo(1);// 设定 1ms/次 // new TimerDemo(); @Override public void actionPerformed(ActionEvent e) if (e.getSource() == start) if (start.getText().equals("开始")) start.setText("暂停"); isRunning = true; else if (start.getText().equals("暂停")) start.setText("开始"); isRunning = false; if (e.getSource() == reset) start.setText("开始"); screen.setText("0"); isRunning = false; time = 0; new Thread(new TimeZone()).start(); class TimeZone implements Runnable @Override public void run() while (isRunning) time++; if (time >= Integer.MAX_VALUE) screen.setText("ERROR"); JOptionPane.showMessageDialog(null, "ERROR"); isRunning = false; screen.setText(String.valueOf(time)); try Thread.sleep(timeBetween); catch (Exception e) e.printStackTrace();

以上是关于用java语言怎么编写计算器中的等号功能,使用户点击等号可以实现结果的输出的主要内容,如果未能解决你的问题,请参考以下文章

用JAVA怎么编写以下两个程序:?!

Java基础技术点牢记

如何使我的 Python 程序提供的功能可用于在同一台或其他计算机上运行的以其他语言编写的程序?

计算器是怎么工作的?用啥语言编写的?

java代码怎样运行出来?

汇编语言到底能不能写出点程序?