java或运算 先判断,JAVA简易计算器(可判断运算符的优先级)制作人:败家子raining...

JAVA简易计算器(可判断运算符的优先级)制作人:浪子raining

package bean;

import java.awt.*;

import java.awt.Image;

import javax.swing.ImageIcon;

import javax.swing.JFrame;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.*;

import java.util.*;

public class Calculate extends JFrame implements ActionListener {

//101112131415161718

String bn[]={"0","1","2","3","4","5","6","7","8","9","+","-","*","/",".","CE","C","=","+/-"};

JButton btn[]=new JButton[19];

Panel p[]=new Panel[6];

TextField text;

Box box;

FlowLayout fv;

Calculate(String title)

{

super(title);

this.setDefaultCloseOperation(EXIT_ON_CLOSE);

box=Box.createVerticalBox();

fv=new FlowLayout();

fv.setVgap(20);

/*

//下面是设置计算器图标的方法:

java.net.URL imgURL = Calculate.class.getResource("images/icon.jpg");//绝对路径:"./images/icon.jpg",相对路径:"images/icon.jpg"

ImageIcon imgIcon = new ImageIcon(imgURL);

Image img = imgIcon.getImage();

this.setIconImage(img);

*/

this.setLocationRelativeTo(null);

for(int i=0;i

{

btn[i]=new JButton(bn[i]);

btn[i].addActionListener(this);

if(i!=15&&i!=16)

{

btn[i].setPreferredSize(new Dimension(55,35));

}

else

{

btn[i].setPreferredSize(new Dimension(85,35));

}

if(i<6)

{

p[i]=new Panel();

box.add(p[i]);

}

if(i==0)

{

text=new TextField("0",30);

p[0].add(text);

}

}

p[1].add(btn[7]);p[1].add(btn[8]);p[1].add(btn[9]);p[1].add(btn[10]);

p[2].add(btn[4]);p[2].add(btn[5]);p[2].add(btn[6]);p[2].add(btn[11]);

p[3].add(btn[1]);p[3].add(btn[2]);p[3].add(btn[3]);p[3].add(btn[12]);

p[4].add(btn[0]);p[4].add(btn[14]);p[4].add(btn[18]);p[4].add(btn[13]);

p[5].add(btn[15]);p[5].add(btn[16]);p[5].add(btn[17]);

this.add(box);

this.setBounds(520,200,280,320);

this.setResizable(false);

this.setVisible(true);

this.validate();

}

int press=0;//用于判断按钮.的点击次数

int press1=0;//用于运算符按钮的点击次数

int press2=0;//用于记录+/-按钮的点击次数

int strlen=0;//用于记录按下运算符时的字符串长度

StringBuffer str=new StringBuffer("0"); //用于记载整条字符串

StringBuffer str2=new StringBuffer("0"); //用于记载整条字符串

double sum1=0;//初始化总和

public void actionPerformed(ActionEvent e) {

if(e.getSource()==btn[10])//按钮+

{

this.yunsf(10);

}

if(e.getSource()==btn[11])//按钮-

{

this.yunsf(11);

}

if(e.getSource()==btn[12])//按钮*

{

this.yunsf(12);

}

if(e.getSource()==btn[13])//按钮/

{

this.yunsf(13);

}

if(e.getSource()==btn[14])//按钮点.

{

if(str.charAt(str.length()-1)!='+'&&str.charAt(str.length()-1)!='-'&&str.charAt(str.length()-1)!='*'&&str.charAt(str.length()-1)!='/'&&press!=1)

{

str.append(btn[14].getText());

str2.append(btn[14].getText());

text.setText(str.toString());

press=1;

}

}

if(e.getSource()==btn[18])//按钮+/-

{

if(str.charAt(str.length()-1)!='+'&&str.charAt(str.length()-1)!='-'&&str.charAt(str.length()-1)!='*'&&str.charAt(str.length()-1)!='/')

{

if(press2==0)

{

str.insert(strlen, "-");

str2.insert(strlen, "@");//

text.setText(str.toString());

press2=1;

}

else

{

str.deleteCharAt(strlen);

str2.deleteCharAt(strlen);

text.setText(str.toString());

press2=0;

}

}

}

if(e.getSource()==btn[15])//按钮CE

{

if(strlen!=0)

{

str.delete(strlen, str.length());

str2.delete(strlen, str2.length());

text.setText(str.toString());

}

else

{

str.delete(0,str.length());

str2.delete(0,str2.length());

str.append("0");

str2.append("0");

text.setText(str.toString());

press=0;

press2=0;

}

}

if(e.getSource()==btn[16])//按钮C

{

str.delete(0, str.length());

str2.delete(0, str2.length());

str.append("0");

str2.append("0");

text.setText(str.toString());

press=0;

press1=0;

press2=0;

strlen=0;

}

if(e.getSource()==btn[17])//按钮=

{

if(str.charAt(str.length()-1)!='+'&&str.charAt(str.length()-1)!='-'&&str.charAt(str.length()-1)!='*'&&str.charAt(str.length()-1)!='/'&&press!=1)

{

String txt=str2.toString();

String shu[]=txt.split("\\+|\\-|\\*|\\/");//分解出字符串中的数字字符

String fh[]=txt.split("@\\d+\\\56\\d+|@\\d+|\\d+\\\56\\d+|\\d+");//分解出字符串中的运算符

for(int i=0;i

{

if(shu[i].startsWith("@"))

{

shu[i]="-"+shu[i].substring(1);

}

}

calculate(shu,fh);

}

}

if(e.getSource()==btn[0])

{

this.shuzi(0);

}

if(e.getSource()==btn[1])

{

this.shuzi(1);

}

if(e.getSource()==btn[2])

{

this.shuzi(2);

}

if(e.getSource()==btn[3])

{

this.shuzi(3);

}

if(e.getSource()==btn[4])

{

this.shuzi(4);

}

if(e.getSource()==btn[5])

{

this.shuzi(5);

}

if(e.getSource()==btn[6])

{

this.shuzi(6);

}

if(e.getSource()==btn[7])

{

this.shuzi(7);

}

if(e.getSource()==btn[8])

{

this.shuzi(8);

}

if(e.getSource()==btn[9])

{

this.shuzi(9);

}

}

public void yunsf(int i)//制定运算符按钮规则

{

if(str.charAt(str.length()-1)!='+'&&str.charAt(str.length()-1)!='-'&&str.charAt(str.length()-1)!='*'&&str.charAt(str.length()-1)!='/'&&str.charAt(str.length()-1)!='.')

{

str.append(btn[i].getText());

str2.append(btn[i].getText());

text.setText(str.toString());

press=0;

press1=1;

press2=0;

strlen=str.length();

}

}

public void shuzi(int i)//制定数字按钮规则

{

if(press1!=1&&press!=1&&str.charAt(0)=='0')

{

str.replace(0, 1,btn[i].getText());

str2.replace(0, 1,btn[i].getText());

text.setText(str.toString());

}

else

{

str.append(btn[i].getText());

str2.append(btn[i].getText());

text.setText(str.toString());

}

}

public void calculate(String shu[],String fh[])//制定运算规则

{

for(int i=1;i

{

if(fh[i].equals("*"))

{

double sum=0;

sum=Double.parseDouble(shu[i-1])*Double.parseDouble(shu[i]);

shu[i-1]=Double.toString(0);

shu[i]=Double.toString(sum);

fh[i]="#";

}

if(fh[i].equals("/"))

{

double sum=0;

sum=Double.parseDouble(shu[i-1])/Double.parseDouble(shu[i]);

shu[i-1]=Double.toString(0);

shu[i]=Double.toString(sum);

fh[i]="#";

}

}

for(int i=1;i

{

if(fh[i].equals("-"))

{

double sum=0;

int n=i;

for(int j=i;j

{

if(fh[j].equals("#"))

{

n++;

}

}

sum=Double.parseDouble(shu[i-1])-Double.parseDouble(shu[n]);

shu[i-1]=Double.toString(0);

shu[n]=Double.toString(sum);

fh[i]="+";

}

}

sum1=Double.parseDouble(shu[0]);

for(int i=1;i

{

sum1+=Double.parseDouble(shu[i]);

}

text.setText(Double.toString(sum1));

str.delete(0, str.length());

str.append(text.getText());

strlen=0;

str2.delete(0, str2.length());

str2.append(text.getText());

press2=0;

}

public static void main(String args[])

{

Calculate cal=new Calculate("JAVA计算器:浪子raining");

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值