- 浏览: 2020 次
- 性别:
- 来自: 广州
文章分类
最新评论
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 {
// 10 11 12 13 14 15 16 17 18
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<bn.length;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<shu.length;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<fh.length;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<fh.length;i++)
{
if(fh[i].equals("-"))
{
double sum=0;
int n=i;
for(int j=i;j<fh.length;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<shu.length;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");
}
}
相关推荐
《RC_JS_Game:基于Raining Chain教程的JavaScript画布游戏开发详解》 JavaScript,作为Web开发中的重要语言,被广泛应用于各种动态效果和交互式应用,尤其是在游戏开发领域。本教程将聚焦于如何使用JavaScript在...
这有助于理解如何将业务逻辑直接转化为可执行的代码,并在实际环境中验证这些代码的正确性。 在实践中,你还将接触到版本控制系统Git,学会如何管理代码版本,协同开发,以及提交和推送代码到远程仓库。同时,项目...
本节课主要涉及的是初中英语七年级下册Unit 7 "It’s raining!"的第二课时,内容集中在Section A的2a, 2b, 2c以及4和Grammar Focus部分。该单元的核心话题是谈论天气,旨在帮助学生掌握描述天气的词汇和表达方式,...
标题 "Java读取远程主机文件" 涉及的核心知识点主要集中在Java远程操作技术,特别是使用SSH(Secure Shell)协议来实现对远程主机的文件访问。在这个场景中,开发人员可能需要从远程服务器上下载文件或者实时读取...
本份教育精品资料“Unit6 It’s raining - A.doc”主要围绕英语教学展开,重点关注描述天气、现在进行时的运用以及相关词汇的学习。以下是对各个部分的详细解释: 1. 教学目标: - 描述并谈论天气:让学生能够用...
NULL 博文链接:https://listen-raining.iteye.com/blog/1894456
Bo-Blog Raining
动词"rain"作为名词时,不可数,如"It’s raining."(正在下雨) - 雨的大小可以用"heavy"(大雨)或"light"(小雨)来形容。 - 题目①答案:rain - 题目②答案:raining - 题目③答案:wind 7. 不定冠词"a/an...
【标题】"LBS^2 raining" 暗示了一个可能与地理位置服务(Location-Based Services,简称LBS)相关的项目或技术,结合描述中的“raining”,我们可以推测这可能是一个关于LBS技术在雨天环境或者天气条件下的应用场景...
16. **some Russians** - 一些俄罗斯人,涉及不同国家的人。 17. **have fun doing sth.** - 开心地做某事,享受活动的乐趣。 18. **sit by the pool** - 坐在游泳池旁,休闲活动。 19. **my family and I** - 我和...
if is_raining: print("记得带伞") else: print("天气晴朗") ``` 对于多条件判断,可以使用if、elif和else语句。elif是"else if"的缩写,允许你检查多个条件,直到找到一个为True的条件并执行相应的代码块。例如...
在Python编程语言的学习中,第一天的笔记主要涵盖了基础概念,包括打印输出、文件路径操作、文件创建、程序运行方式以及变量、运算符等基础知识。以下是对这些知识点的详细阐述: 1. **打印输出**: 在Python中,...
在3D建模的世界里,"3D-raining.zip" 提供了一个关于模拟连锁反应的项目,这让我们深入了解了3D技术在娱乐、设计和虚拟现实(VR)领域的应用。3D建模是数字艺术的核心技能,它允许艺术家们通过计算机软件创造出具有...
很抱歉,根据您提供的信息,"raining200508浪潮存储产品线共76页.pdf" 和 "raining200508浪潮存" 标签似乎指向了一个关于浪潮存储产品的详细文档,但压缩包内的实际文件名为 "赚钱项目",这与浪潮存储产品线的主题不...
```java public class RainSurfaceView extends SurfaceView implements SurfaceHolder.Callback { // ... } ``` 2. 实现SurfaceHolder.Callback接口: 在SurfaceCreated()方法中,初始化绘图环境;在...
raining.c
这篇文档是关于陕西省安康市紫阳县七年级英语下册Unit 7 "It’s raining" Period 5的教学教案,采用的是新版人教新目标版教材。本单元的核心话题是天气,旨在帮助学生掌握与天气相关的词汇和表达方式,提高他们的...
在Python AI开发中,逻辑判断是编程中不可或缺的一部分,它使得我们的程序能够根据不同的条件执行不同的操作,从而赋予了代码智能决策的能力。本篇将详细讲解如何使用逻辑判断来构建多分支的程序流程。 首先,我们...
这篇资料是关于七年级英语下册 Unit 7 It’s raining Section A 的 Grammar Focus-3b 部分,主要涉及了与天气相关的词汇、日常情景交际对话以及语法应用。以下是根据提供的内容提炼出的相关知识点: 1. **短语翻译*...
该文档是针对初中一年级下学期英语课程的教学方案,聚焦于Unit 7 "It’s raining!" 的第四课时,主要涉及人教新目标版教材。这个单元的核心内容是教授与天气相关的词汇、句型以及如何在不同天气条件下进行的活动。 ...