/**
@author Song Liang Peng
@version 2005.7.23
*/
import java.awt.*;
import java.awt.event.*;
public class Counter extends Frame implements ActionListener
{
TextField t=new TextField("",15);
Panel p1=new Panel();
Panel p2=new Panel();
Button[] b=new Button[10];
Button bAdd=new Button("+");
Button bSub=new Button("-");
Button bMul=new Button("*");
Button bDiv=new Button("/");
Button bPoint=new Button(".");
Button bEqual=new Button("=");
Button bSqrt=new Button("开平方");
Button bNull=new Button("清空");
String str1=""; //str1和str2存放两个输入的数
String str2="";
String operator=null; //存放加减乘除以及开平方的符号
boolean first=true; //检验输入的是否为第一个数
int countOper=0; //累计输入符号的个数,连加连减等操作中会用到
double result=0.0; //暂存结果
double num1=0.0,num2=0.0; //两个输入的数做运算时转化为double存放
boolean error=false; //检验除数是否为0
//构造方法
public Counter()
{
super("counter");
t.setEditable(false);
for(int i=0;i<b.length;i++)
{
b[i]=new Button(String.valueOf(i));
p1.add(b[i]);
b[i].setActionCommand("number");
b[i].addActionListener(this);
}
p1.add(bPoint);
bPoint.setActionCommand("number");
p1.add(bAdd); //数字键,符号键放置在panel的p1中
p1.add(bSub);
p1.add(bMul);
p1.add(bDiv);
p1.add(bEqual);
p2.add(bSqrt); //开平方和清空键放置在panel的p2中
p2.add(bNull);
bAdd.setActionCommand("oper");
bSub.setActionCommand("oper");
bMul.setActionCommand("oper");
bDiv.setActionCommand("oper");
bAdd.addActionListener(this);
bSub.addActionListener(this);
bMul.addActionListener(this);
bDiv.addActionListener(this);
bPoint.addActionListener(this);
bEqual.addActionListener(this);
bSqrt.addActionListener(this);
bNull.addActionListener(this);
p1.setLayout(new GridLayout(4,4,5,5));
p2.setLayout(new FlowLayout());
add(t,"North"); //frame的north放置输入框,panel放置在center和south
add(p1,"Center");
add(p2,"South");
setLocation(400,200);
setSize(200,200);
setBackground(Color.red);
setVisible(true);
addWindowListener(new WindowAdapter(){ //关闭窗口
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
//实现接口ActionListener
public void actionPerformed(ActionEvent e)
{
Button temp=(Button)e.getSource();
if(e.getActionCommand().equals("number"))
{
if(first)
{
str1=str1+temp.getLabel();
t.setText(str1);
}
else
{
str2=str2+temp.getLabel();
t.setText(str2);
}
}
else if(e.getActionCommand().equals("oper"))
{
if(str1=="") //如果还没有输入数就点击运算符执行if,127行同理
{
countOper=0;
first=true;
}
else
{
countOper++;
if(countOper>1)
{
getResult();
}
operator=temp.getLabel();
first=false;
}
}
else if(e.getActionCommand().equals("开平方"))
{
if(str1=="")
{
countOper=0;
first=true;
}
else
{
countOper=1;
if(countOper>1)
{
getResult();
}
double d=Math.sqrt(Double.parseDouble(str1));
str1=String.valueOf(d);
t.setText(String.valueOf(d));
first=false;
}
}
else if(e.getActionCommand().equals("清空"))
{
str1="";
str2="";
t.setText("");
countOper=0;
first=true;
error=false;
}
else if(e.getActionCommand().equals("="))
{
if((str1=="")||(str2=="")) //两个数没有输全就点击等号,执行if
{
countOper=0;
first=true;
}
else
{
getResult();
countOper=0;
}
}
}
//运算结果的方法
public void getResult()
{
num1=Double.parseDouble(str1);
num2=Double.parseDouble(str2);
if(operator.equals("+"))
{
result=num1+num2;
}
else if(operator.equals("-"))
{
result=num1-num2;
}
else if(operator.equals("*"))
{
result=num1*num2;
}
else if(operator.equals("/"))
{
if(num2==0.0) //除数为0的处理方法
{
error=true;
}
else
{
result=num1/num2;
}
}
if(error)
{
t.setText("error");
}
else
{
t.setText(String.valueOf(result));
str1=String.valueOf(result); //运算后把结果放入str1中,str2清空,为连加连减等操作做准备
str2="";
}
}
//主方法
public static void main(String[] args)
{
new Counter();
}
}
一个Java实现的计算器小程序
时间: 2025-01-21 13:22:47
一个Java实现的计算器小程序的相关文章
java-关于Java含有数据库的小程序打包问题
问题描述 关于Java含有数据库的小程序打包问题 我想把我用MyEclipse写的一个含有sqlsever数据库的Java小程序打包成jar包,然后放在桌面上可以双击打开,就像其他应用一样,但是我下载了sqlsever的驱动包,不知道如何把驱动包和程序一起打包成jar包,求好心大神帮助! 解决方案 http://blog.csdn.net/ljz2009y/article/details/7707237
Java版的QQ小程序
这是一个简单的java版的QQ小程序. 包括一个简单的服务器和一个简单的客户端. 运行时,先运行服务器,然后在运行客户端,就可以进行聊天了. 默认的配置是localhost,端口4545,更改ip就可以在两天电脑上进行聊天了. 目前不支持内网和外网之间的访问,也不支持多人聊天. 因为这只是一个简单的例子,感兴趣的同学可以通过改进,实现多人聊天和内外网之间的访问. 效果图: 下载地址:http://download.csdn.net/source/2958843 源代码: QQServer.jav
windows-想做一个可以帮助工作的小程序,但不知道怎么入手!
问题描述 想做一个可以帮助工作的小程序,但不知道怎么入手! 我想用C语言实现一个小工具,它可以把图纸上的数字识别出来,然后通过调用windows api 操作键盘和鼠标打开word软件然后把这个数字输入在word文档里,保存退出!不知道哪位大侠 可以给一些指点 解决方案 我见过,应该是先把图截取出来吧 解决方案二: 求助:想做一个sourcesafe的程序想做一个android程序 解决方案三: "图纸上的数字"?c能open文本文件.二进制文件,图像文件好像不行吧
求一个特别简单的安卓小程序 就是点击一个按钮就与IP127.0.0.1 端口8500建立连接
问题描述 求一个特别简单的安卓小程序 就是点击一个按钮就与IP127.0.0.1 端口8500建立连接 就是安卓的socket程序 能与只连接就行 主要我不懂线程有人说不能写到主线程里 解决方案 把网络耗时的操作放到Handler里面,新建线程操作. http://www.cnblogs.com/devinzhang/archive/2011/12/30/2306980.html 解决方案二: sockt()://建立套接字 connect()://连接 send()://发送 recv():/
Java简易登录注册小程序_java
登录注册小代码,将学过的一些小知识融合在一起进行了使用,加深印象.本例中如果有注释不详细的地方,详见其它博客. 功能介绍:简单的登录注册系统,使用了数据库sqlserver.单例模式.正则表达式以及图形化开发等知识. 1.在登录界面,可以登录或者注册用户. 注册用户界面,按照正则表达式规定的格式要求来输入信息,若有误,则重新输入. 2.点击注册,首先连接SQLserver数据库,连接成功则会判断该用户名是否已经存在,若存在,则给出提示.反之则进行注册. 3.登录界面,点击登录按钮时,首先与数据库
第一个delphi for php的小程序
今天化了一个小时写了一个小程序,我的delphi php的第一个程序.功能是在浏览器上显示一道简单的加法题,用户可以输入答案,电脑会告诉你正确或者错误,然后可以再来一题.功能很简单,主要为了熟悉delphi for php,写的时候,不时地查阅php帮助,发现这次codegear的php帮助做的还是不错的. 程序如下: //Includesrequire_once("vcl/vcl.inc.php");use_unit("forms.inc.php");use_un
一个有关随机函数rand()的小程序
随机函数rand()的小程序: #include<iostream> #include <time.h> #include <fstream> #include <windows.h> using namespace std; unsigned t[300],temp; void creat_rand() //产生随机数的函数 { long i=1; cout<<"为您产生的随机数如下:"<<endl; srand
java 音频播放-applet小程序已经启动了为什么音频播放不出来呢
问题描述 applet小程序已经启动了为什么音频播放不出来呢 是因为URL所指文件不能放在本地项目文件夹中吗在elise下拜托拜托,很急 解决方案 applet,,,老古董了 !
java源码-竞赛小程序,我不太会写,求大神教我
问题描述 竞赛小程序,我不太会写,求大神教我 这个题目不太会写,求大神教思路给源码?????????????????????????? 解决方案 http://blog.csdn.net/ocean20/article/details/5017538 解决方案二: 解决问题分步走: 1.判断是否为方阵,判断每行相邻数据是否有相等的,有即非方阵,判断行数据相等应该会不需提供代码: 2.判断是否标准反正,判断第一行相邻数据是否差值等于1,判断第一列相邻数据差值是否等于1,应该会不需提供代码.