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