王朝知道
分享
 
 
 

用JAVA做一个计算器

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

我也知道很简单 不过要求写出详细的解释程序文件

上课不认真的后果 主要这个是选修的 所以没有放在心上 各位大侠帮忙了啊

参考答案:

import javax.swing.*;

import javax.swing.event.*;

import java.awt.*;

import java.awt.event.*;

public class Jisuanqi extends JFrame implements ActionListener {

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

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

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

boolean com = false;

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

int i = 0;

//存放text的内容

String text = "";

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

double defbutton = 0;

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

int symbol = 0;

//构造函数

Jisuanqi() {

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

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

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

pane.setLayout(new BorderLayout());

setBounds(380,220,30,80); //前两个参数是在屏幕上显示的坐标,后两个是大小

//替换图标

ImageIcon icon=new ImageIcon(

Jisuanqi.class.getResource("APPLE.GIF")

);

setIconImage(icon.getImage());

pane.add(result, BorderLayout.NORTH);

pane.add(number_key, BorderLayout.CENTER);

pane.add(number_key.equal, 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.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 {

text = result.text.getText();

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

}

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

if (com || i == 0) {

result.text.setText("2");

com = false;

i = 1;

} else {

text = result.text.getText();

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

}

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

if (com || i == 0) {

result.text.setText("3");

com = false;

i = 1;

} else {

text = result.text.getText();

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

}

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

if (com || i == 0) {

result.text.setText("4");

com = false;

i = 1;

} else {

text = result.text.getText();

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

}

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

if (com || i == 0) {

result.text.setText("5");

com = false;

i = 1;

} else {

text = result.text.getText();

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

}

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

if (com || i == 0) {

result.text.setText("6");

com = false;

i = 1;

} else {

text = result.text.getText();

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

}

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

if (com || i == 0) {

result.text.setText("7");

com = false;

i = 1;

} else {

text = result.text.getText();

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

}

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

if (com || i == 0) {

result.text.setText("8");

com = false;

i = 1;

} else {

text = result.text.getText();

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

}

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

if (com || i == 0) {

result.text.setText("9");

com = false;

i = 1;

} else {

text = result.text.getText();

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

}

}

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

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

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

*/

else if (e.getSource() == number_key.zero) { //result.text.getText()是得到text里内容的意思

if (com || i == 0) {

result.text.setText("0");

com = false;

i = 1;

} else {

text = result.text.getText();

if (Float.parseFloat(text) > 0 || Float.parseFloat(text) < 0) { //Float.parseFloat(text)就是类型转换了,下面都是一样

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

} else {

if (text.trim().indexOf(".") == -1) {

result.text.setText(text);

} else {

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

}

}

}

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

result.text.setText("0");

i = 0;

com = true;

}

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

* 不存在就添加.

*/

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

if (com || i == 0) {

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

com = false;

i = 1;

} else {

text = result.text.getText();

if (text.trim().indexOf(".") == -1) {

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

} else {

result.text.setText(text);

}

}

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

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

com = true;

i = 0;

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

symbol = 1;

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

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

com = true;

i = 0;

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

symbol = 2;

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

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

com = true;

i = 0;

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

System.out.println(defbutton);

symbol = 3;

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

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

com = true;

i = 0;

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

symbol = 4;

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

switch (symbol) {

case 1 : //计算加法

{

double ad =

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

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

i = 0;

text = "";

break;

}

case 2 ://计算减法

{

double ad =

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

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

i = 0;

text = "";

break;

}

case 3 ://计算乘法

{

double ad =

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

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

i = 0;

text = "";

break;

}

case 4 ://计算除法

{

double ad =

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

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

i = 0;

text = "";

break;

}

}

System.out.println(com);

}

}

public static void main(String[] args) {

Jisuanqi loveyou = new Jisuanqi();

loveyou.show();

}

}

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

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

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("清零"); //置零键

JButton point = new JButton(".");

Number_Key() {

setLayout(new GridLayout(4, 4, 1, 1)); //定义布局管理器为网格布局

setBackground(Color.blue); //设置背景颜色

//添加按钮

add(one);

add(two);

add(three);

add(four);

add(five);

add(six);

add(seven);

add(eight);

add(nine);

add(zero);

add(plus);

add(sub);

add(mul);

add(div);

add(point);

add(equal);

add(ce);

}

}

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

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

class Result extends JPanel {

//text先是输入和结果

JTextField text = new JTextField("0");

Result() { //讲输入的数字或得到的结果在text的右边显示

text.setHorizontalAlignment(SwingConstants.RIGHT);

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

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

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

}

}

小贴士:① 若网友所发内容与教科书相悖,请以教科书为准;② 若网友所发内容与科学常识、官方权威机构相悖,请以后者为准;③ 若网友所发内容不正确或者违背公序良俗,右下举报/纠错。
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用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- 王朝网络 版权所有