分享
 
 
 

用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放置在窗体的中间

}

}

小贴士:① 若网友所发内容与教科书相悖,请以教科书为准;② 若网友所发内容与科学常识、官方权威机构相悖,请以后者为准;③ 若网友所发内容不正确或者违背公序良俗,右下举报/纠错。
 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有