java简单计算器

本文介绍了一个简单的计算器类设计,该类包含两个操作数和一个运算符,并提供了设置属性和执行基本算术运算的方法。通过实例化计算器类并调用其方法,可以实现加、减、乘、除等基本运算。

 //计算器类  class Calculator{   private int num1; //操作数1   private int num2;  //操作数2    private char option ; //运算符   //提供公共的方法设置属性值....    public void initCalculator(int num1,int num2,char o){     this.num1=num1;     this.num2=num2;     if(o=='+'||o=='-'||o=='*'||o=='/'){     option = o;    }else{     option = '+';     }    }     //计算的功能    public void calculate(){     switch(option){      case '+':         System.out.println("做加法运算,结果是:"+(num1+num2));         break;      case '-':         System.out.println("做减法运算,结果是:"+(num1-num2));         break;      case '*':         System.out.println("做乘法运算,结果是:"+(num1*num2));         break;      case '/':          System.out.println("做除法运算,结果是:"+(num1/num2));         break;       }      }  }

 

转载于:https://www.cnblogs.com/CoolClare/p/10783953.html

一个java编译的最简单计算器 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class jisuan extends JFrame implements ActionListener{ /** * */ private static final long serialVersionUID = 5823423246304135749L; JPanel cp=new JPanel(); JPanel cp1=new JPanel(); Double nu1,nu2; ImageIcon ii=new ImageIcon("images/2_marcblue.jpg"); JPanel cp2=new JPanel(); JLabel jl=new JLabel(); String[] Jlabel = {"7","8","9","/","4","5","6","*","1","2","3","-","0",".","=","+"};//声明标签数组label1存放按钮上的标签 JButton[] b; JButton h=new JButton("c"); //private JButton buttonWithTitle=new JButton("Button with Title",new ImageIcon("src/anwendung/tree.jpg")); private JButton c=new JButton("后退",ii); JButton pf=new JButton("x^y"); int j=0,n=0,a=0,g=0; //Button[] b=new Button[10]; //JTextArea jt=new JTextArea(1,34); JTextField jt=new JTextField("0",30); //JLabel jt=new JLabel(); String st,st1,st2; Boolean t=true; public jisuan(){ setTitle("计算器"); setSize(220,220); //this.setbackgroundImage = new ImageIcon("images/6.21.bmp"); cp=(JPanel)this.getContentPane(); //this.setExtendedState(HIDE_ON_CLOSE); this.setUndecorated(false); this.setResizable(false);//窗口固定不变。 //cp.setEnabled(false); this.addWindowListener(new WindowAdapter(){//给窗口f添加窗口事件监听器 public void windowClosing(WindowEvent eve){ System.exit(0); } }); cp.setLayout(new BorderLayout()); cp.add(jt,BorderLayout.NORTH); cp.add(cp1,BorderLayout.CENTER); //cp.add(cp2,BorderLayout.SOUTH); //cp1.setLayout(new GridLayout(3,4)); cp1.setLayout(null); //cp.add(jt); jt.setHorizontalAlignment(JTextField.RIGHT);//右边显示。 jt.setFont(new Font("Serif",Font.BOLD|Font.ITALIC,15));//设置字体的大小和显示方式; jt.setBackground(Color.white);//背景白色 jt.setEditable(false); //jt.setEnabled(true); b = new JButton[Jlabel.length]; for(int i=0;i<b.length;i++)//利用for循环把标签放在按钮上,使每个按钮添加事件监听器,在面板p1上添加上16个按钮 { b[i] = new JButton(Jlabel[i]); b[i].setSize(45, 25); b[i].setLocation(10+50*(i%4),10+30*(i/4));//把标签依次放在16个按钮上 b[i].addActionListener( this);//使每个按钮添加动作事件监听器 cp1.add(b[i]); //分别将按钮添加到面板p1上 } h.setSize(45,25); h.setLocation(10,130); h.addActionListener(this); cp1.add(h); // c.setSize(70,25); // c.setLocation(135, 130); // c.setIcon(ii); c.setBounds(135,130,70,25 ); c.setFont(new Font("a",Font.BOLD,10));//设置字体的大小和显示方式; c.addActionListener(this); cp1.add(c); pf.setSize(70,25); pf.setLocation(60, 130); pf.addActionListener(this); cp1.add(pf); //cp.add(new Button("2").addActionListener(new ActionListener(){})); } @Override public void actionPerformed(ActionEvent e) { if("0,1,2,3,4,5,6,7,8,9".indexOf(e.getActionCommand())!=-1){ if(j==0||g==1){//判断是否第一次输入或者运算符后输入; if("0".equals(e.getActionCommand())) jt.setText("0"); else {jt.setText(e.getActionCommand());j=1;} g=0; } else{ st = jt.getText(); jt.setText(st+e.getActionCommand());} } else if("c".equals(e.getActionCommand())){ jt.setText("0"); j=0;a=0;n=0;g=0; } else if("后退".equals(e.getActionCommand())){ st=jt.getText(); /*String r=new String(30); for(int i=0;i<st.length()-1;i++){ String t=String.valueOf(st.charAt(i)); r.concat(t); System.out.println(r); }*/ if(st.length()==1){ jt.setText("0"); j=0;a=0;n=0;g=0; } else{ if(".".equals(String.valueOf(st.charAt(st.length()-1)))){ n=0; System.out.println(n); } String r; n=0; r=st.substring(0, st.length()-1); jt.setText(r); //System.out.println(".".equals(String.valueOf(st.charAt(st.length()-1)))); } } else if(".".equals(e.getActionCommand())){ System.out.println(n); if(n==0&&g==0){ st = jt.getText(); jt.setText(st+e.getActionCommand()); n=1;j=1; } else{ jt.setText("0"); j=0;a=0;n=0;g=0; } } else if("+,-,*,/".indexOf(e.getActionCommand())!=-1){ if(j==1&&"0.".equals(jt.getText())!=true){ if(a==0){//判断是否第一次输入运算符; nu1=Double.parseDouble(jt.getText()); j=0; st=st1=e.getActionCommand(); a=1; } else { nu2=Double.parseDouble(jt.getText()); if(st1.equals("+")){ nu1=nu1+nu2; jt.setText(String.valueOf(nu1)); } else if(st1.equals("-")){ nu1=nu1-nu2; jt.setText(String.valueOf(nu1)); } else if(st1.equals("*")){ nu1=nu1*nu2; jt.setText(String.valueOf(nu1)); } else if(st1.equals("/")){ nu1=nu1/nu2; jt.setText(String.valueOf(nu1)); } else if(st1.equals("x^y")){ Double num=nu1; int nu=Integer.parseInt(String.valueOf(nu2)); while(nu>1){ nu1=nu1*num;nu--;} jt.setText(String.valueOf(nu1)); } j=0; st1=e.getActionCommand(); } } else{ st1=e.getActionCommand(); jt.setText("0"); j=0;a=0;n=0;g=0; } t=false; } else if("=".equals(e.getActionCommand())){ if("=".equals(String.valueOf(st.charAt(st.length()-1)))) a=1; else nu2=Double.parseDouble(jt.getText()); System.out.println(nu2); if(a==1){ //nu2=Double.parseDouble(st); if(st1.equals("+")){ nu1=nu1+nu2; jt.setText(String.valueOf(nu1)); } else if(st1.equals("-")){ nu1=nu1-nu2; jt.setText(String.valueOf(nu1)); } else if(st1.equals("*")){ nu1=nu1*nu2; jt.setText(String.valueOf(nu1)); } else if(st1.equals("/")){ nu1=nu1/nu2; jt.setText(String.valueOf(nu1)); } else if(st1.equals("x^y")){ Double num=nu1; for(;nu2>1;nu2--) nu1=nu1*num; jt.setText(String.valueOf(nu1)); } } a=0;g=1;t=true;st=e.getActionCommand(); } else if("x^y".equals(e.getActionCommand())){ if(t=true){ nu1=Double.parseDouble(jt.getText()); j=0; st1=e.getActionCommand(); a=1; } } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值