本文作者:qiaoqingyi

制作简易计算器代码(简单计算器app制作)

qiaoqingyi 2023-03-09 609

今天给各位分享制作简易计算器代码的知识,其中也会对简单计算器app制作进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

请教一下如何编程一个简易计算器

方法/步骤

1

打开Microsoft Visual Studio 2010, 新建名字为【计算器】的程序。

2

在新程序界面空白窗口上放置合适的控件:包括,

显示过程数字和结果数字的textbox控件;

用于各数字输入和计算方式输入的按钮,包括1,2,3,4,5,6,7,9,0和加减乘除等符号。

3

添加变量temp1(第一个数字)和pos(计算方式)

4

添加类addNum,在点击数字按钮时使用,用于在显示屏上增加用户输入的数字。

添加数字按钮0-9的代码,分别调用类addNum。

添加【=】按钮代码

记录第二个数字;

根据计算方式进行计算,显示计算结果。

添加归零按钮的代码,清空显示屏,将计算结果归零,将计算方式归零。

生成exe文件进行测试

输入第一个数字425

点击【+】,输入第二个数字897

点击【=】,获取计算结果1322

点击【CE】,将数字归零

输入第一个数字852

点击【*】,输入第二个数字84

点击【=】,获取计算结果71568

15

同样可以验证减法和除法。

MFC编写计算器具体步骤 方法 代码,拜托高手急用!

1、首先打开VS2013,新建一个VC++ MFC项目,命名为 gongzi。

2、然后在程序类型中,选择“基于对话框”,点击“完成”按钮。

3、然后在弹出的对话框中,删除原先的Static Text,添加相应的控件到窗体上。

4、接着在应发工资编辑框右击添加变量。 变量名称是 m_editTotal, 变量类型是 double, 类别为 value,点击“完成”。同样扣税费用编辑框右击添加变量。 变量名称是 m_editTax, 变量类型是 double, 类别为 value,应扣税款标签右击添加变量。

5、然后双击“计算应扣税款”进入代码,添加代码。

6、最后点击运行,输入对应的数目,按下按钮,查看执行效果。

制作简易计算器代码(简单计算器app制作)

大神,求51单片机做简易计算器的那个c语言程序

以下是我编的简易计算器程序,基本成功

//4*4键盘检测程序,按下键后相应的代码显示在液晶屏上

//显示5位后,第6次显示操作符号

//再显示下一个数

// 键值与功能对应表

//键值 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

//功能 0 1 2 3 4 5 6 7 8 9 + - × ÷ = 清零

#includereg52.h

sbit beep=P2^3;

sbit lcden=P3^4;

sbit rs=P3^5;

sbit rw=P3^6;

#define uint unsigned int

#define ulint unsigned long int

#define uchar unsigned char

#define lcddata P0

ulint bb,dd,ee,ff;

uchar d,flag1;

uchar fd1,fd2;

uchar b1=16,b2=16,b3=16,b4=16,b5=16;

uchar d1=16,d2=16,d3=16,d4=16,d5=16;

uchar f1=16,f2=16,f3=16,f4=16,f5=16,f6=16,f7=16,f8=16,f9=16,f10=16;

uchar key,keyval,c,temp;

void Delay1ms(uint i) //1ms延时程序

{

uint j;

for(;i0;i--)

{

for(j=0;j125;j++)

{;}

}

}

void write_com(uchar com)

{

lcddata=com;

rs=0;

rw = 0;

lcden=0;

Delay1ms(10);

lcden=1;

Delay1ms(10);

lcden=0;

}

void write_date(uchar date)

{

lcddata=date;

rs=1;

rw=0;

lcden=0;

Delay1ms(10);

lcden=1;

Delay1ms(10);

lcden=0;

}

void init2()

{

rw=0;

write_com(0x38);

Delay1ms(10);

write_com(0x0f);

Delay1ms(10);

write_com(0x06);

Delay1ms(10);

write_com(0x01);

Delay1ms(10);

}

void display1(uchar A1,uchar A2,uchar A3,uchar A4,uchar A5) //第1个数显示程序

{

init2();

write_com(0x80);//第1行,第1字

Delay1ms(10);

write_date(0x30+A1);

Delay1ms(10);

write_date(0x30+A2);

Delay1ms(10);

write_date(0x30+A3);

Delay1ms(10);

write_date(0x30+A4);

Delay1ms(10);

write_date(0x30+A5);

Delay1ms(10);

}

void display2(uchar A1,uchar A2,uchar A3,uchar A4,uchar A5) //第2个数显示程序

{

write_com(0x88);//第1行,第1字

Delay1ms(10);

write_date(0x30+A1);

Delay1ms(10);

write_date(0x30+A2);

Delay1ms(10);

write_date(0x30+A3);

Delay1ms(10);

write_date(0x30+A4);

Delay1ms(10);

write_date(0x30+A5);

Delay1ms(10);

}

void display3(uchar a) //操作符号显示程序

{

write_com(0x86);//第1行,第1字

Delay1ms(10);

switch(a)

{

case 10:

write_date('+');

Delay1ms(10);

case 11:

write_date('-');

Delay1ms(10);

case 12:

write_date('x');

Delay1ms(10);

case 13:

write_date('/');

Delay1ms(10);

}

}

void display4(uchar A1,uchar A2,uchar A3,uchar A4,uchar A5,uchar A6,uchar A7,uchar A8,uchar A9,uchar A10,uchar A11,uchar A12) //结果显示程序

{

write_com(0x80+0x40);//第2行,第1字

Delay1ms(10);

if (flag1==0)

{

write_date('-');

}

else write_date('+');

Delay1ms(10);

write_date(0x30+A1);

Delay1ms(10);

write_date(0x30+A2);

Delay1ms(10);

write_date(0x30+A3);

Delay1ms(10);

write_date(0x30+A4);

Delay1ms(10);

write_date(0x30+A5);

Delay1ms(10);

write_date(0x30+A6);

Delay1ms(10);

write_date(0x30+A7);

Delay1ms(10);

write_date(0x30+A8);

Delay1ms(10);

write_date(0x30+A9);

Delay1ms(10);

write_date(0x30+A10);

Delay1ms(10);

write_date('.');

Delay1ms(10);

write_date(0x30+A11);

Delay1ms(10);

write_date(0x30+A12);

Delay1ms(10);

}

uchar keyscan()

{

key=16;

P3=0xef;//P3.7输出1个低电平

temp=P3; //读取

temp=temp0x0f;//屏蔽高4位

if(temp!=0x0f)

{

Delay1ms(10);

if(temp!=0x0f)

{

temp=P3;

switch(temp)

{

case 0xee:

key=0;

break;

case 0xed:

key=4;

break;

case 0xeb:

key=8;

break;

case 0xe7:

key=12;

break;

}

while(temp!=0x0f)

{

temp=P3;

temp=temp0x0f;

beep=0;

}

beep=1;

}

}

P3=0xdf;

temp=P3;

temp=temp0x0f;

if(temp!=0x0f)

{

Delay1ms(10);

if(temp!=0x0f)

{

temp=P3;

switch(temp)

{

case 0xde:

key=1;

break;

case 0xdd:

key=5;

break;

case 0xdb:

key=9;

break;

case 0xd7:

key=13;

break;

}

while(temp!=0x0f)

{

temp=P3;

temp=temp0x0f;

beep=0;

}

beep=1;

}

}

P3=0xbf;

temp=P3;

temp=temp0x0f;

if(temp!=0x0f)

{

Delay1ms(10);

if(temp!=0x0f)

{

temp=P3;

switch(temp)

{

case 0xbe:

key=2;

break;

case 0xbd:

key=6;

break;

case 0xbb:

key=10;

break;

case 0xb7:

key=14;

break;

}

while(temp!=0x0f)

{

temp=P3;

temp=temp0x0f;

beep=0;

}

beep=1;

}

}

P3=0x7f;

temp=P3;

temp=temp0x0f;

if(temp!=0x0f)

{

Delay1ms(10);

if(temp!=0x0f)

{

temp=P3;

switch(temp)

{

case 0x7e:

key=3;

break;

case 0x7d:

key=7;

break;

case 0x7b:

key=11;

break;

case 0x77:

key=15;

break;

}

while(temp!=0x0f)

{

temp=P3;

temp=temp0x0f;

beep=0;

}

beep=1;

}

}

return(key);

}

void main()

{ while(1)

{

c=1;

while(c6)//输入第1个5 位数

{

keyval=keyscan();

if(keyval10)

{

switch(c)

{

case 1:b1=keyval; break;

case 2:b2=keyval; break;

case 3:b3=keyval; break;

case 4:b4=keyval; break;

case 5:b5=keyval; break;

}

c++;

}

display1(b1,b2,b3,b4,b5);

}

while(c==6) //输入计算符号

{

keyval=keyscan();

if((keyval=10)(keyval14)) //可去一层括号,因逻辑运算优先级较低

{

d=keyval;

}

c=1;

display3(d);

}

while(c6) //输入第2个5 位数

{

keyval=keyscan();

if(keyval10)

{

switch(c)

{

case 1:d1=keyval; break;

case 2:d2=keyval; break;

case 3:d3=keyval; break;

case 4:d4=keyval; break;// 除

case 5:d5=keyval; break;

}

c++;

}

display2(d1,d2,d3,d4,d5);

}

bb= b1*10000+b2*1000+b3*100+b4*10+b5;

dd=d1*10000+d1*1000+d3*100+d4*10+d5;

while(keyval!=14) //等待按下"="

{

keyval=keyscan();

}

Delay1ms(10);

switch(d)

{

case 10:ee=bb+dd; break;//+

case 11:

flag1=1;

if(bb=dd)

{

ee=bb-dd; //-

flag1=0;

}

else ee=dd-bb;

break;

case 12:ee=bb*dd; break;//*可能会溢出

case 13:ee=bb/dd; //除法小数部分会丢失,保留2位

ff=bb%dd;

fd1=ff*10/dd;

fd2=ff*100/dd%10;

break;

}

f10=ee/1000000000%10;

f9=ee/100000000%10;

f8=ee/10000000%10;

f7=ee/1000000%10;

f6=ee/100000%10;

f5=ee/10000%10;

f4=ee/1000%10;

f3=ee/100%10;

f2=ee/10%10;

f1=ee%10;

display4(f10,f9,f8,f7,f6,f4,f4,f3,f2,f1,fd1,fd2);

while(keyval!=15)

{

keyval=keyscan();

}

b1=0;b2=0;b3=0;b4=0;b5=0;

d1=0;d2=0;d3=0;d4=0;d5=0;

bb=0;dd=0;ee=0;

init2();

}

}

简单的计算器设计的程序代码

#include dos.h /*DOS接口函数*/

#include math.h /*数学函数的定义*/

#include conio.h /*屏幕操作函数*/

#include stdio.h /*I/O函数*/

#include stdlib.h /*库函数*/

#include stdarg.h /*变量长度参数表*/

#include graphics.h /*图形函数*/

#include string.h /*字符串函数*/

#include ctype.h /*字符操作函数*/

#define UP 0x48 /*光标上移键*/

#define DOWN 0x50 /*光标下移键*/

#define LEFT 0x4b /*光标左移键*/

#define RIGHT 0x4d /*光标右移键*/

#define ENTER 0x0d /*回车键*/

void *rar; /*全局变量,保存光标图象*/

struct palettetype palette; /*使用调色板信息*/

int GraphDriver; /* 图形设备驱动*/

int GraphMode; /* 图形模式值*/

int ErrorCode; /* 错误代码*/

int MaxColors; /* 可用颜色的最大数值*/

int MaxX, MaxY; /* 屏幕的最大分辨率*/

double AspectRatio; /* 屏幕的像素比*/

void drawboder(void); /*画边框函数*/

void initialize(void); /*初始化函数*/

void computer(void); /*计算器计算函数*/

void changetextstyle(int font, int direction, int charsize); /*改变文本样式函数*/

void mwindow(char *header); /*窗口函数*/

int specialkey(void) ; /*获取特殊键函数*/

int arrow(); /*设置箭头光标函数*/

/*主函数*/

int main()

{

initialize();/* 设置系统进入图形模式 */

computer(); /*运行计算器 */

closegraph();/*系统关闭图形模式返回文本模式*/

return(0); /*结束程序*/

}

/* 设置系统进入图形模式 */

void initialize(void)

{

int xasp, yasp; /* 用于读x和y方向纵横比*/

GraphDriver = DETECT; /* 自动检测显示器*/

initgraph( GraphDriver, GraphMode, "" );

/*初始化图形系统*/

ErrorCode = graphresult(); /*读初始化结果*/

if( ErrorCode != grOk ) /*如果初始化时出现错误*/

{

printf("Graphics System Error: %s\n",

grapherrormsg( ErrorCode ) ); /*显示错误代码*/

exit( 1 ); /*退出*/

}

getpalette( palette ); /* 读面板信息*/

MaxColors = getmaxcolor() + 1; /* 读取颜色的最大值*/

MaxX = getmaxx(); /* 读屏幕尺寸 */

MaxY = getmaxy(); /* 读屏幕尺寸 */

getaspectratio( xasp, yasp ); /* 拷贝纵横比到变量中*/

AspectRatio = (double)xasp/(double)yasp;/* 计算纵横比值*/

}

/*计算器函数*/

void computer(void)

{

struct viewporttype vp; /*定义视口类型变量*/

int color, height, width;

int x, y,x0,y0, i, j,v,m,n,act,flag=1;

float num1=0,num2=0,result; /*操作数和计算结果变量*/

char cnum[5],str2[20]={""},c,temp[20]={""};

char str1[]="1230.456+-789*/Qc=^%";/* 定义字符串在按钮图形上显示的符号 */

mwindow( "Calculator" ); /* 显示主窗口 */

color = 7; /*设置灰颜色值*/

getviewsettings( vp ); /* 读取当前窗口的大小*/

width=(vp.right+1)/10; /* 设置按钮宽度 */

height=(vp.bottom-10)/10 ; /*设置按钮高度 */

x = width /2; /*设置x的坐标值*/

y = height/2; /*设置y的坐标值*/

setfillstyle(SOLID_FILL, color+3);

bar( x+width*2, y, x+7*width, y+height );

/*画一个二维矩形条显示运算数和结果*/

setcolor( color+3 ); /*设置淡绿颜色边框线*/

rectangle( x+width*2, y, x+7*width, y+height );

/*画一个矩形边框线*/

setcolor(RED); /*设置颜色为红色*/

outtextxy(x+3*width,y+height/2,"0."); /*输出字符串"0."*/

x =2*width-width/2; /*设置x的坐标值*/

y =2*height+height/2; /*设置y的坐标值*/

for( j=0 ; j4 ; ++j ) /*画按钮*/

{

for( i=0 ; i5 ; ++i )

{

setfillstyle(SOLID_FILL, color);

setcolor(RED);

bar( x, y, x+width, y+height ); /*画一个矩形条*/

rectangle( x, y, x+width, y+height );

sprintf(str2,"%c",str1[j*5+i]);

/*将字符保存到str2中*/

outtextxy( x+(width/2), y+height/2, str2);

x =x+width+ (width / 2) ; /*移动列坐标*/

}

y +=(height/2)*3; /* 移动行坐标*/

x =2*width-width/2; /*复位列坐标*/

}

x0=2*width;

y0=3*height;

x=x0;

y=y0;

gotoxy(x,y); /*移动光标到x,y位置*/

arrow(); /*显示光标*/

putimage(x,y,rar,XOR_PUT);

m=0;

n=0;

strcpy(str2,""); /*设置str2为空串*/

while((v=specialkey())!=45) /*当压下Alt+x键结束程序,否则执行下面的循环*/

{

while((v=specialkey())!=ENTER) /*当压下键不是回车时*/

{

putimage(x,y,rar,XOR_PUT); /*显示光标图象*/

if(v==RIGHT) /*右移箭头时新位置计算*/

if(x=x0+6*width)

/*如果右移,移到尾,则移动到最左边字符位置*/

{

x=x0;

m=0;

}

else

{

x=x+width+width/2;

m++;

} /*否则,右移到下一个字符位置*/

if(v==LEFT) /*左移箭头时新位置计算*/

if(x=x0)

{

x=x0+6*width;

m=4;

} /*如果移到头,再左移,则移动到最右边字符位置*/

else

{

x=x-width-width/2;

m--;

} /*否则,左移到前一个字符位置*/

if(v==UP) /*上移箭头时新位置计算*/

if(y=y0)

{

y=y0+4*height+height/2;

n=3;

} /*如果移到头,再上移,则移动到最下边字符位置*/

else

{

y=y-height-height/2;

n--;

} /*否则,移到上边一个字符位置*/

if(v==DOWN) /*下移箭头时新位置计算*/

if(y=7*height)

{

y=y0;

n=0;

} /*如果移到尾,再下移,则移动到最上边字符位置*/

else

{

y=y+height+height/2;

n++;

} /*否则,移到下边一个字符位置*/

putimage(x,y,rar,XOR_PUT); /*在新的位置显示光标箭头*/

}

c=str1[n*5+m]; /*将字符保存到变量c中*/

if(isdigit(c)||c=='.') /*判断是否是数字或小数点*/

{

if(flag==-1) /*如果标志为-1,表明为负数*/

{

strcpy(str2,"-"); /*将负号连接到字符串中*/

flag=1;

} /*将标志值恢复为1*/

sprintf(temp,"%c",c); /*将字符保存到字符串变量temp中*/

strcat(str2,temp); /*将temp中的字符串连接到str2中*/

setfillstyle(SOLID_FILL,color+3);

bar(2*width+width/2,height/2,15*width/2,3*height/2);

outtextxy(5*width,height,str2); /*显示字符串*/

}

if(c=='+')

{

num1=atof(str2); /*将第一个操作数转换为浮点数*/

strcpy(str2,""); /*将str2清空*/

act=1; /*做计算加法标志值*/

setfillstyle(SOLID_FILL,color+3);

bar(2*width+width/2,height/2,15*width/2,3*height/2);

outtextxy(5*width,height,"0."); /*显示字符串*/

}

if(c=='-')

{

if(strcmp(str2,"")==0) /*如果str2为空,说明是负号,而不是减号*/

flag=-1; /*设置负数标志*/

else

{

num1=atof(str2); /*将第二个操作数转换为浮点数*/

strcpy(str2,""); /*将str2清空*/

act=2; /*做计算减法标志值*/

setfillstyle(SOLID_FILL,color+3);

bar(2*width+width/2,height/2,15*width/2,3*height/2); /*画矩形*/

outtextxy(5*width,height,"0."); /*显示字符串*/

}

}

if(c=='*')

{

num1=atof(str2); /*将第二个操作数转换为浮点数*/

strcpy(str2,""); /*将str2清空*/

act=3; /*做计算乘法标志值*/

setfillstyle(SOLID_FILL,color+3); bar(2*width+width/2,height/2,15*width/2,3*height/2);

outtextxy(5*width,height,"0."); /*显示字符串*/

}

if(c=='/')

{

num1=atof(str2); /*将第二个操作数转换为浮点数*/

strcpy(str2,""); /*将str2清空*/

act=4; /*做计算除法标志值*/

setfillstyle(SOLID_FILL,color+3);

bar(2*width+width/2,height/2,15*width/2,3*height/2);

outtextxy(5*width,height,"0."); /*显示字符串*/

}

if(c=='^')

{

num1=atof(str2); /*将第二个操作数转换为浮点数*/

strcpy(str2,""); /*将str2清空*/

act=5; /*做计算乘方标志值*/

setfillstyle(SOLID_FILL,color+3); /*设置用淡绿色实体填充*/

bar(2*width+width/2,height/2,15*width/2,3*height/2); /*画矩形*/

outtextxy(5*width,height,"0."); /*显示字符串*/

}

if(c=='%')

{

num1=atof(str2); /*将第二个操作数转换为浮点数*/

strcpy(str2,""); /*将str2清空*/

act=6; /*做计算模运算乘方标志值*/

setfillstyle(SOLID_FILL,color+3); /*设置用淡绿色实体填充*/

bar(2*width+width/2,height/2,15*width/2,3*height/2); /*画矩形*/

outtextxy(5*width,height,"0."); /*显示字符串*/

}

if(c=='=')

{

num2=atof(str2); /*将第二个操作数转换为浮点数*/

switch(act) /*根据运算符号计算*/

{

case 1:result=num1+num2;break; /*做加法*/

case 2:result=num1-num2;break; /*做减法*/

case 3:result=num1*num2;break; /*做乘法*/

case 4:result=num1/num2;break; /*做除法*/

case 5:result=pow(num1,num2);break; /*做x的y次方*/

case 6:result=fmod(num1,num2);break; /*做模运算*/

}

setfillstyle(SOLID_FILL,color+3); /*设置用淡绿色实体填充*/

bar(2*width+width/2,height/2,15*width/2,3*height/2); /*覆盖结果区*/

sprintf(temp,"%f",result); /*将结果保存到temp中*/

outtextxy(5*width,height,temp); /*显示结果*/

}

if(c=='c')

{

num1=0; /*将两个操作数复位0,符号标志为1*/

num2=0;

flag=1;

strcpy(str2,""); /*将str2清空*/

setfillstyle(SOLID_FILL,color+3); /*设置用淡绿色实体填充*/

bar(2*width+width/2,height/2,15*width/2,3*height/2); /*覆盖结果区*/

outtextxy(5*width,height,"0."); /*显示字符串*/

}

if(c=='Q')exit(0); /*如果选择了q回车,结束计算程序*/

}

putimage(x,y,rar,XOR_PUT); /*在退出之前消去光标箭头*/

return; /*返回*/

}

/*窗口函数*/

void mwindow( char *header )

{

int height;

cleardevice(); /* 清除图形屏幕 */

setcolor( MaxColors - 1 ); /* 设置当前颜色为白色*/

setviewport( 20, 20, MaxX/2, MaxY/2, 1 ); /* 设置视口大小 */

height = textheight( "H" ); /* 读取基本文本大小 */

settextstyle( DEFAULT_FONT, HORIZ_DIR, 1 );/*设置文本样式*/

settextjustify( CENTER_TEXT, TOP_TEXT );/*设置字符排列方式*/

outtextxy( MaxX/4, 2, header ); /*输出标题*/

setviewport( 20,20+height+4, MaxX/2+4, MaxY/2+20, 1 ); /*设置视口大小*/

drawboder(); /*画边框*/

}

void drawboder(void) /*画边框*/

{

struct viewporttype vp; /*定义视口类型变量*/

setcolor( MaxColors - 1 ); /*设置当前颜色为白色 */

setlinestyle( SOLID_LINE, 0, NORM_WIDTH );/*设置画线方式*/

getviewsettings( vp );/*将当前视口信息装入vp所指的结构中*/

rectangle( 0, 0, vp.right-vp.left, vp.bottom-vp.top ); /*画矩形边框*/

}

/*设计鼠标图形函数*/

int arrow()

{

int size;

int raw[]={4,4,4,8,6,8,14,16,16,16,8,6,8,4,4,4}; /*定义多边形坐标*/

setfillstyle(SOLID_FILL,2); /*设置填充模式*/

fillpoly(8,raw); /*画出一光标箭头*/

size=imagesize(4,4,16,16); /*测试图象大小*/

rar=malloc(size); /*分配内存区域*/

getimage(4,4,16,16,rar); /*存放光标箭头图象*/

putimage(4,4,rar,XOR_PUT); /*消去光标箭头图象*/

return 0;

}

/*按键函数*/

int specialkey(void)

{

int key;

while(bioskey(1)==0); /*等待键盘输入*/

key=bioskey(0); /*键盘输入*/

key=key0xff? key0xff:key8; /*只取特殊键的扫描值,其余为0*/

return(key); /*返回键值*/

}

JAVA 编写计算器 要代码最简单的

学java的时候自己编的,很简单,能够连续输入计算式后进行计算

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.FlowLayout;

import java.awt.Font;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.text.NumberFormat;

import java.util.ArrayList;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JTextField;

/**简易计算器,能够进行简单的计算

*

* @see 2008.12.9

*/

public class CalculatorA

implements ActionListener{

private JFrame frame;

private JTextField field;

private JButton[] allButtons;

private JButton clearButton;

// private JButton backButton;

String result="";//保存结果

StringBuilder sb = new StringBuilder();//保存要进行的计算式

int x = 0; //用来判断上一次的事件类型

String str = "123+456-789*0.=/";

ArrayListString arrayList = new ArrayListString();//保存计算式,通过方法进行运算

public CalculatorA(){

frame = new JFrame("我的计算器v1.1");

frame.setLocation(300,300);

field = new JTextField(25);

allButtons = new JButton[16];

for(int i=0;iallButtons.length;i++){

allButtons[i]= new JButton(str.substring(i,i+1));

}

clearButton = new JButton("CLEAR");

// backButton = new JButton("——");

init();

setFondAndColor();

addEventHander();

}

public void init(){

frame.setLayout(new BorderLayout());

JPanel northPanel = new JPanel();

JPanel centerPanel = new JPanel();

JPanel southPanel = new JPanel();

northPanel.setLayout(new FlowLayout());

centerPanel.setLayout(new GridLayout(4,4));

southPanel.setLayout(new FlowLayout());

northPanel.add(field);

for(int i=0;iallButtons.length;i++){

centerPanel.add(allButtons[i]);

}

southPanel.add(clearButton);

//southPanel.add(backButton);

frame.add(northPanel,BorderLayout.NORTH);

frame.add(centerPanel,BorderLayout.CENTER);

frame.add(southPanel,BorderLayout.SOUTH);

}

//设置输入字体

public void setFondAndColor(){

field.setFont(new Font("宋体",Font.BOLD,24));

field.setBackground(new Color(100,200,200));

field.setForeground(Color.RED);

//设置字体从右起始

field.setHorizontalAlignment(JTextField.RIGHT);

}

public void showMi(){

frame.pack();

frame.setResizable(false);

frame.setVisible(true);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public void addEventHander(){

for(int i=0;iallButtons.length;i++){

allButtons[i].addActionListener(this);

}

clearButton.addActionListener(this);

// backButton.addActionListener(this);

}

@Override

public void actionPerformed(ActionEvent e) {

String str = e.getActionCommand();//取得当前事件返回的值

if("0123456789.".indexOf(str)!=-1){

if(x == 0){ //当x为0时表示还没有进行输入

result=str;

sb.append(str);

field.setText(str);

x = 1;

}

else if(x == 1){

result = result +str;

sb.append(str);

field.setText(result);

x = 1;

}

else if(x == 2){

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

result = result+str;

sb.append(str);

field.setText(result);

x = 1;

}

else if(x == 3){

result = str;

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

arrayList.clear();

field.setText(str);

sb.append(str);

field.setText(str);

x = 1;

}

else if(x == 4){

result ="";

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

arrayList.clear();

result = str;

sb.append(str);

field.setText(str);

x = 1;

}

else{

result = result +str;

sb.append(str);

field.setText(result);

x = 1;

}

}

else if("+*-/".indexOf(str)!=-1){

if(x == 0){

field.setText("");

x = 2;

}

else if(x == 1){

result = result + str;

arrayList.add(sb.toString());

arrayList.add(str);

sb.append(str);

field.setText(result);

x = 2;

}

else if(x == 2){

x = 2;

}

else if(x == 3){

field.setText(result+str);

arrayList.add(result);

arrayList.add(str);

result = result+str;

x = 2;

}

else if(x == 4){

result ="";

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

arrayList.clear();

x = 2;

}

else{

field.setText(result+str);

arrayList.add(result);

arrayList.add(str);

result = result+str;

x = 2;

}

}

else if("=".equals(str)){

if(x == 0){

field.setText("0");

arrayList.clear();

result = "0";

x = 3;

}

else if(x == 1){

try{

arrayList.add(sb.toString());

arrayList = getResult(arrayList);

result = arrayList.get(0);

field.setText(result);

arrayList.clear();

x = 3;

}catch(Exception e1){

field.setText("数据格式异常");

x = 0;

}

}

else if(x == 2){

field.setText("数据格式错误.....");

arrayList.clear();

x = 0;

}

else if(x == 3){

field.setText(result);

x = 3;

}

else if(x == 4){

result ="";

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

arrayList.clear();

x = 3;

}

else {

try{

arrayList.add(sb.toString());

arrayList = getResult(arrayList);

result = arrayList.get(0);

field.setText(result);

arrayList.clear();

x = 3;

}catch(Exception e1){

field.setText("数据格式异常");

x = 0;

}

}

}

else if("CLEAR".equals(str)){

arrayList.clear();

field.setText("0");

arrayList.add("0");

x = 4;

}

else{

if(result.length()1){

result = result.substring(0,result.length()-1);

if(sb.length()0){

sb.delete(sb.length()-1,sb.length());

}

else {

sb.delete(0,1);

}

field.setText(result);

x = 5;

}

else{

result = "";

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

arrayList.clear();

field.setText("0");

x = 0;

}

}

}

public static ArrayListString getResult(ArrayListString list){

String res = null;

String[] s = {"/","*","-","+"};

int i=0;

if(list.size()1){

for(;is.length;){

if(s[i].equals("/")){

for(int j=0;jlist.size();j++){

if(list.get(j).equals(s[i])){

res = Double.toString(Double.parseDouble(list.get(j-1))/Double.parseDouble(list.get(j+1)));

//本地的数据格式

NumberFormat nf = NumberFormat.getInstance();

res = nf.format(Double.parseDouble(res));

res = getChange(res);

list.set(j-1,res);

list.remove(j);

list.remove(j);

getResult(list);

}

}

i++;

}

else if(s[i].equals("*")){

for(int j=0;jlist.size();j++){

if(list.get(j).equals(s[i])){

res = Double.toString(Double.parseDouble(list.get(j-1))*Double.parseDouble(list.get(j+1)));

NumberFormat nf = NumberFormat.getInstance();

res = nf.format(Double.parseDouble(res));

res = getChange(res);

list.set(j-1,res);

list.remove(j);

list.remove(j);

getResult(list);

}

}

i++;

}

else if(s[i].equals("-")){

for(int j=0;jlist.size();j++){

if(list.get(j).equals(s[i])){

res = Double.toString(Double.parseDouble(list.get(j-1))-Double.parseDouble(list.get(j+1)));

NumberFormat nf = NumberFormat.getNumberInstance();

res = nf.format(Double.parseDouble(res));

res = getChange(res);

list.set(j-1,res);

list.remove(j);

list.remove(j);

getResult(list);

}

}

i++;

}

else {

for(int j=0;jlist.size();j++){

if(list.get(j).equals(s[i])){

res = Double.toString(Double.parseDouble(list.get(j-1))+Double.parseDouble(list.get(j+1)));

NumberFormat nf = NumberFormat.getInstance();

res = nf.format(Double.parseDouble(res));

res = getChange(res);

list.set(j-1,res);

list.remove(j);

list.remove(j);

getResult(list);

}

}

i++;

}

}

}

return list;

}

//对数字字符串进行排除不必要符号

public static String getChange(String res){

String s_temp = "";

char[] c = new char[res.length()];

for(int k=0;kc.length;k++){

c[k] = res.charAt(k);

}

for(int k=0;kc.length;k++){

if((c[k]= '0' c[k]= '9')|| c[k] == '.'){

s_temp += c[k];

}

}

return s_temp;

}

public static void main(String[] args){

new CalculatorA().showMi();

}

}

html网页计算器代码怎么写?

html网页计算器代码编写过程如下:

1.首先我们要做好一个计算器的界面,主要用到html与css的知识,下面是代码

table id="calculater" onClick="calculater()"

tr

td id="display" colspan="5"0/td

/tr

tr

td class="numberkey" 1/td

td class="numberkey" 2/td

td class="numberkey" 3/td

td class="numberkey" +/td

td class="numberkey"  id="deletesign"c/td

/tr

tr

td class="numberkey" 4/td

td class="numberkey" 5/td

td class="numberkey" 6/td

td class="numberkey" -/td

td rowspan="3" id="equality" onclick="resultscalcaulte()"=/td

/tr

tr

td class="numberkey" 7/td

td class="numberkey" 8/td

td class="numberkey" 7/td

td class="numberkey" */td

/tr

tr

td class="numberkey" +/-/td

td class="numberkey" 0/td

td class="numberkey" ./td

td class="numberkey" //td          

/tr

上面设置一个简单的table表格,主要内容是计算器的数字键盘和符号,还有就是class名和ID名,函数名,主要是用作css样式设计和javascript程序设计,后面会用到,就先贴出来了

colspan="5" 是合并五列的意思,表示这个单元格要占五列

rowspan="3"是合并三行的意思,表示这个单元格要占三行

效果如下,这样一个简单的架构就完成了

2.接下来就是css的设计,下面是代码

*{

padding:0;

margin:1px;

}

#calculater{

margin: auto;

margin-top: 30px;

border: solid 6px #2371D3;

border-spacing: 0px;

}

#display{

width: 100%;

height: 30px;

border-bottom: solid 4px #2371D3;

font-weight: bold;

color: #193D83;

font-family: 黑体;

padding-left: 2px;

}

.numberkey{

cursor: pointer;

width: 40px;

height: 30px;

border: solid 1px #FFFFFF;

background: #2371D3;

color: #ffffff;

text-align: center;

font-weight: bold;

font-family: 黑体;

}

#equality{

cursor: pointer;

width: 40px;

height: 100%;

background: #2371D3;

border: solid 1px #FFFFFF;

color: #ffffff;

text-align: center;

font-weight: bold;

font-family: 黑体;

}

.numberkey:hover{

background: #EA6F30;

}

#equality:hover{

background: #EA6F30;

}

以上是css代码,比较简单

border-spacing: 0px;

这里代码的意义是:table中单元格与单元格,表格边缘都有默认距离,这里border-spacing: 0px;能使其默认距离为零,没有这句会比较难设计好看的样式。

cursor: pointer;

这里代码的意义是:使鼠标放在上面时变成一个手的标志

效果如下

3.接下来是javascript的代码,按照思路来一点点写

首先我们要设计,当鼠标点击某个单元格时我们能获取这个单元格上的内容,即数字或符号

所以我们在table标签里加上onClick="calculater()",添加一个点击事件

然后用event.srcElement.innerText获取单元格上的内容,event是事件的意思,在这里这个事件当然是点击了,srcElement就是事件的元素,在这里是被点击的单元格,innerText是获取这个单元格的内容。

这里我们就可以写出这个函数第一行代码,获取被点击的单元格的内容

function calculater(){

results=event.srcElement.innerText;

}

results就是单元格的内容

4.当然获取了什么要显示在第一个单元格那里,这里我们还是用innerText,来输出这个点击的值

display.innerText=results;

这里代码的意义是:display是第一格单元格的id,就是在第一行显示你点击了什么

calculater()的代码就变成这样

function calculater(){

results=event.srcElement.innerText;

display.innerText=results;

}

这样我们就能输出我们点击的单元格内容

5.但这样我们只能输出一次单击的内容,为了把内容串起来,我们把代码改为

var results="";

function calculater(){

results+=event.srcElement.innerText;

display.innerText=results;

}

设置results为全局变量,event.srcElement.innerText用+=累加进results,

这样我们就能输入并显示一条算式

6.我们在“=”单元格标签里加上onClick="resultscalcaulte()",计算这个结果

function resultscalcaulte(){

calresults=eval()(results);

display.innerText=calresults;

}

eval();能运行括号里的javascript语句的字符串,并返回其值,如果results等于7+8,那eval就会计算7+8,并返回56,然后后面一条代码把56显示出来

7.加入上面的运算后,还是无法显示结果,原因是点击“=”单元格会先触发resultscalcaulte()函数,再触发calculater()函数,所以我们在resultscalcaulte()得到的结果就被calculater()的结果覆盖了,我们需要再在calculater()里加上

if (event.srcElement.innerText=="=") {

return;

}

使点击“=”单元格触发的calculater()函数得不到任何结果

最后得到最简单的计算器运算代码

var results="";

var calresults="";

function calculater(){

if (event.srcElement.innerText=="=") {

return;

}

results+=event.srcElement.innerText;

display.innerText=results;

}

function resultscalcaulte(){

calresults=eval(results);

display.innerText=calresults;

}

8.下面是计算7*8的结果

制作简易计算器代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于简单计算器app制作、制作简易计算器代码的信息别忘了在本站进行查找喔。

阅读
分享