王朝知道
分享
 
 
 

java做一个计算器,请各位伸出援助之手,小女子感激不尽

王朝知道·作者佚名  2010-08-25  
宽屏版  字体: |||超大  
 
分类: 电脑/网络 >> 程序设计 >> 其他编程语言
 
问题描述:

1.所交程序代码长度不能少于100行。

2.程序必须能运行。

3.必须附加程序说明

4.程序说明格式如下:

A本程序用到了JAVA中的哪些技术,实现了哪些功能,有哪些还没有实现。

B 本程序包括有哪些类,每个类的主要功能是什么?每个类提供了哪些接口供用户使用

参考答案:

这是我的,希望对大家有帮助。

import javax.swing.*;

//import javax.swing.event.*;

import java.awt.*;

import java.awt.event.*;

//计算器显示结果的窗体

class Result extends JPanel

{

JTextField text = new JTextField("0"); //text先是输入和结果

Result()

{

text.setHorizontalAlignment(SwingConstants.RIGHT); //讲输入的数字或得到的结果在text的右边显示

text.setEnabled(false); //文本框不能编辑

setLayout(new BorderLayout()); //设定布局管理器边框布局

add(text, BorderLayout.CENTER); //text放置在窗体的中间

}

}

//计算器数字按钮定义面板

class Number_Key extends JPanel

{

JButton zero = new JButton("0");//数字键0

JButton one = new JButton("1");//数字键1

JButton two = new JButton("2");//数字键2

JButton three = new JButton("3");//数字键3

JButton four = new JButton("4");//数字键4

JButton five = new JButton("5");//数字键5

JButton six = new JButton("6");//数字键6

JButton seven = new JButton("7");//数字键7

JButton eight = new JButton("8");//数字键8

JButton nine = new JButton("9");//数字键9

JButton plus = new JButton("+");

JButton sub = new JButton("-");

JButton mul = new JButton("*");

JButton div = new JButton("/");

JButton equal = new JButton("=");

JButton ce = new JButton("ce");//置零键

JButton point = new JButton(".");

JButton tzero = new JButton("00");

Number_Key()

{

setLayout(new GridLayout(6, 3, 10, 10));//定义布局管理器为网格布局

//添加各个按钮键

add(seven);

add(eight);

add(nine);

add(four);

add(five);

add(six);

add(one);

add(two);

add(three);

add(zero);

add(tzero);

add(plus);

add(sub);

add(mul);

add(div);

add(point);

add(equal);

add(ce);

}

}

//计算器主类

class sakura extends JFrame implements ActionListener

{

Result result = new Result();//定义text的面板

Number_Key number_key = new Number_Key();//定义按钮面板

//当点击按钮+、-、*、/时,com = true

boolean com = false;

//当i=0时说明是我们第一次输入,字符串sum不会累加

int i = 0;

//存放text的内容

String sum = "";

//存放点击按钮+、-、*、/之前的数值

double total = 0;

//+、-、*、/的代号分别为1,2,3,4

int symbol = 0;

sakura()

{

super("Calculator");//设定标题

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设定关闭窗体时退出程序

JPanel pane = new JPanel();//定义主面板

pane.setLayout(new BorderLayout());

pane.add(result, BorderLayout.NORTH);

pane.add(number_key, BorderLayout.SOUTH);

number_key.one.addActionListener(this);//对1按钮添加监听事件

number_key.two.addActionListener(this);//对2按钮添加监听事件

number_key.three.addActionListener(this);//对3按钮添加监听事件

number_key.four.addActionListener(this);//对4按钮添加监听事件

number_key.five.addActionListener(this);//对5按钮添加监听事件

number_key.six.addActionListener(this);//对6按钮添加监听事件

number_key.seven.addActionListener(this);//对7按钮添加监听事件

number_key.eight.addActionListener(this);//对8按钮添加监听事件

number_key.nine.addActionListener(this);//对9按钮添加监听事件

number_key.zero.addActionListener(this);//对0按钮添加监听事件

number_key.ce.addActionListener(this);//对置零按钮添加监听事件

number_key.plus.addActionListener(this);//对+按钮添加监听事件

number_key.equal.addActionListener(this);//对=按钮添加监听事件

number_key.sub.addActionListener(this);//对-按钮添加监听事件

number_key.mul.addActionListener(this);//对*按钮添加监听事件

number_key.div.addActionListener(this);//对/按钮添加监听事件

number_key.tzero.addActionListener(this);//对00按钮添加监听事件

number_key.point.addActionListener(this);//对.按钮添加监听事件

setContentPane(pane);

pack();//初始化窗体大小为正好盛放所有按钮

}

//各个按钮触发的事件

public void actionPerformed(ActionEvent e) {

/*如果是点击数字按钮那么先要判断是否在此之前点击了+、-、*、/、=,如果是那么com=true

* 如果没有com= false;或者是否点击数字键,如果是i = 1,如果没有 i = 0;

**/

if (e.getSource() == number_key.one)

{

if (com || i == 0)

{

result.text.setText("1");

com = false;

i = 1;

}

else

{

sum = result.text.getText();

result.text.setText(sum + "1");

}

}

else if (e.getSource() == number_key.two)

{

if (com || i == 0)

{

result.text.setText("2");

com = false;

i = 1;

}

else

{

sum = result.text.getText();

result.text.setText(sum + "2");

}

}

else if (e.getSource() == number_key.three)

{

if (com || i == 0)

{

result.text.setText("3");

com = false;

i = 1;

}

else

{

sum = result.text.getText();

result.text.setText(sum + "3");

}

}

else if (e.getSource() == number_key.four)

{

if (com || i == 0)

{

result.text.setText("4");

com = false;

i = 1;

}

else

{

sum = result.text.getText();

result.text.setText(sum + "4");

}

}

else if (e.getSource() == number_key.five)

{

if (com || i == 0)

{

result.text.setText("5");

com = false;

i = 1;

}

else

{

sum = result.text.getText();

result.text.setText(sum + "5");

}

}

else if (e.getSource() == number_key.six)

{

if (com || i == 0)

{

result.text.setText("6");

com = false;

i = 1;

}

else

{

sum = result.text.getText();

result.text.setText(sum + "6");

}

}

else if (e.getSource() == number_key.seven)

{

if (com || i == 0)

{

result.text.setText("7");

com = false;

i = 1;

}

else

{

sum = result.text.getText();

result.text.setText(sum + "7");

}

}

else if (e.getSource() == number_key.eight)

{

if (com || i == 0)

{

result.text.setText("8");

com = false;

i = 1;

}

else

{

sum = result.text.getText();

result.text.setText(sum + "8");

}

}

else if (e.getSource() == number_key.nine)

{

if (com || i == 0)

{

result.text.setText("9");

com = false;

i = 1;

}

else

{

sum = result.text.getText();

result.text.setText(sum + "9");

}

}

/*对于0这个按钮有一定的说法,在我的程序里不会出现如00000这样的情况,我加了判断条件就是

* 如果text中的数值=0就要判断在这个数值中是否有.存在?如果有那么就在原来数值基础之上添

* 加0;否则保持原来的数值不变

*/

else if (e.getSource() == number_key.zero)

{

if (com || i == 0)

{

result.text.setText("0");

com = false;

i = 1;

}

else

{

sum = result.text.getText();

if (Float.parseFloat(sum) > 0 || Float.parseFloat(sum) < 0)

{

result.text.setText(sum + "0");

}

else

{

if (sum.trim().indexOf(".") == -1)

{

result.text.setText(sum);

}

else

{

result.text.setText(sum + "0");

}

}

}

}

else if (e.getSource() == number_key.ce)

{

result.text.setText("0");

i = 0;

com = true;

}

else if (e.getSource() == number_key.tzero)

{

if (com || i == 0)

{

result.text.setText("0");

com = false;

i = 1;

}

else

{

sum = result.text.getText();

if (Float.parseFloat(sum) > 0 || Float.parseFloat(sum) < 0)

{

result.text.setText(sum + "00");

}

else

{

if (sum.trim().indexOf(".") == -1)

{

result.text.setText(sum);

}

else

{

result.text.setText(sum + "00");

}

}

}

}

/*本程序不会让一个数值中出现2个以上的小数点.具体做法是:判断是否已经存在.存在就不添加,

* 不存在就添加.

*/

else if (e.getSource() == number_key.point)

{

if (com || i == 0)

{

result.text.setText("0.");

com = false;

i = 1;

}

else

{

sum = result.text.getText();

if (sum.trim().indexOf(".") == -1)

{

result.text.setText(sum + ".");

}

else

{

result.text.setText(sum);

}

}

}

//获得点击+之前的数值

else if (e.getSource() == number_key.plus)

{

com = true;

i = 0;

total = Double.parseDouble(result.text.getText());

symbol = 1;

}//获得点击-之前的数值

else if (e.getSource() == number_key.sub)

{

com = true;

i = 0;

total = Double.parseDouble(result.text.getText());

symbol = 2;

}//获得点击*之前的数值

else if (e.getSource() == number_key.mul)

{

com = true;

i = 0;

total = Double.parseDouble(result.text.getText());

System.out.println(total);

symbol = 3;

}//获得点击/之前的数值

else if (e.getSource() == number_key.div)

{

com = true;

i = 0;

total = Double.parseDouble(result.text.getText());

symbol = 4;

}

else if (e.getSource() == number_key.equal)

{

switch (symbol)

{

case 1 ://计算加法

{

double ad =

total + Double.parseDouble(result.text.getText());

result.text.setText(ad + "");

i = 0;

sum = "";

break;

}

case 2 ://计算减法

{

double ad =

total - Double.parseDouble(result.text.getText());

result.text.setText(String.valueOf(ad));

i = 0;

sum = "";

break;

}

case 3 ://计算乘法

{

double ad =

total * Double.parseDouble(result.text.getText());

result.text.setText(ad + "");

i = 0;

sum = "";

break;

}

case 4 ://计算除法

{

double ad =

total / Double.parseDouble(result.text.getText());

result.text.setText(ad + "");

i = 0;

sum = "";

break;

}

}

System.out.println(com);

}

}

public static void main(String[] args)

{

sakura ww = new sakura();

ww.setVisible(true) ;

}

}

小贴士:① 若网友所发内容与教科书相悖,请以教科书为准;② 若网友所发内容与科学常识、官方权威机构相悖,请以后者为准;③ 若网友所发内容不正确或者违背公序良俗,右下举报/纠错。
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格&#8203;十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有