java计算器程序设计报告_求一份JAVA计算机程序设计报告

展开全部

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import javax.swing.*;

import javax.swing.border.*;

import java.util.*;

@SuppressWarnings("serial")

public class ComputerPad extends JFrame

implements ActionListener

{

private NumberButton[] numberButton;

private OperationButton[] operationButton;

private JButton dotButton;

private JButton signButton;

private JButton backspaceButton;

private JButton reciprocalButton;

private JButton equalButton;

private JButton clearZeroButton;

JPanel panel;

JTextField resultShow;

operationButton = new OperationButton[4];

operationButton[0] = new OperationButton("+");

operationButton[1] = new OperationButton("-");

operationButton[2] = new OperationButton("*");

operationButton[3] = new OperationButton("/");

LinkedList dataList;

// 等号进行默认设置

boolean equalButtonIsPressed = false;

public ComputerPad(){

super("yuelou计算e68a84e8a2ad3231313335323631343130323136353331333236613461器");

dataList = new LinkedList();

numberButton = new NumberButton[10];

for(int i = 0; i <= 9; i++){

numberButton[i] = new NumberButton(i);

numberButton[i].addActionListener(this);

}

operationButton = new OperationButton[4];

for(int i = 0;i < 4; i++){

operationButton[i] = new OperationButton(operators[i]);

operationButton[i].addActionListener(this);

}

//符号进行初始设置

dotButton = new JButton(".");

signButton = new JButton("+/-");

equalButton = new JButton("=");

reciprocalButton = new JButton("1/x");

backspaceButton = new JButton("退格");

clearZeroButton = new JButton("AC");

//设置颜色

clearZeroButton.setForeground(Color.red);

backspaceButton.setForeground(Color.red);

reciprocalButton.setForeground(Color.red);

equalButton.setForeground(Color.blue);

signButton.setForeground(Color.blue);

dotButton.setForeground(Color.blue);

clearZeroButton.addActionListener(this);

backspaceButton.addActionListener(this);

reciprocalButton.addActionListener(this);

equalButton.addActionListener(this);

signButton.addActionListener(this);

dotButton.addActionListener(this);

resultShow = new JTextField(10);

resultShow.setHorizontalAlignment(JTextField.RIGHT);

resultShow.setForeground(Color.blue);

resultShow.setFont(new Font("TimesRoman", Font.PLAIN, 15));

resultShow.setBorder(new SoftBevelBorder(BevelBorder.LOWERED));

resultShow.setBackground(Color.white);

resultShow.setEditable(false);

panel = new JPanel();

// 设置四行五列

panel.setLayout(new GridLayout(4,5));

//面板中的第一行

for(int i = 1; i < 4; i++)

{

p.add(numberButton[i]);

}

p.add(operationButton[0]);

p.add(clearButton);

//面板中的第2行

for(int i = 4; i < 7; i++)

{

p.add(numberButton[i]);

}

p.add(operationButton[1]);

p.add(bkspaceButton)

//面板中的第3行

for(int i = 7; i < 10; i++)

{

p.add(numberButton[i]);

}

p.add(operationButton[2]);

p.add(reciprocalButton);

//面板中的第4行

p.add(numberButton[0]);

p.add(signButton);

p.add(dotButton);

p.add(operationButton[3]);

p.add(equalButton);

add(panel, BorderLayout.CENTER);

add(resultShow, BorderLayout.NORTH);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setVisible(true);

setBounds(100, 50, 340, 180);

setResizable(false);

validate();

}

public void actionPerformed(ActionEvent e) {

//如果按下的是“数字按钮”

if(e.getSource() instanceof NumberButton){

NumberButton b = (NumberButton)e.getSource();

//字符串中没有字符时

if(dataList.size() == 0){

int number = b.getNumber();

dataList.add("" + number);

resultShow.setText("" + number);

equalButtonIsPressed = false;

}

//字符串中有一个字符时,并且在此时没有按过等号

else if(dataList.size() == 1 && equalButtonIsPressed == false){

int number = b.getNumber();

String num = (String)dataList.getFirst();

String s = num.concat("" + number);

//把S放在字符串的第一个位置,下标为零

dataList.set(0, s);

//把S输出到窗口

resultShow.setText(s);

}//字符串中有一个字符时,并且在此时按过等号

else if(dataList.size() == 1 && equalButtonIsPressed == true){

int number = b.getNumber();

//把字符串中的第一个移出

dataList.removeFirst();

dataList.add("" + number);

equalButtonIsPressed = false;

resultShow.setText("" + number);

}

else if(dataList.size() == 2){

int number = b.getNumber();

dataList.add("" + number);

resultShow.setText("" + number);

}else if(dataList.size() == 3){

int number = b.getNumber();

String num = (String)dataList.getLast();

String s = num.concat("" + number);

dataList.set(2, s);

resultShow.setText(s);

}

}

//如果按下的是“各种操作符按钮”

else if(e.getSource() instanceof OperationButton){

OperationButton b = (OperationButton)e.getSource();

if(dataList.size() == 1){

String fuhao = b.getOperator();

dataList.add(fuhao);

}

else if(dataList.size() == 2){

String fuhao = b.getOperator();

dataList.set(1, fuhao);

}

else if(dataList.size() == 3){

String fuhao = b.getOperator();

String number1 = (String)dataList.getFirst();

String number2 = (String)dataList.getLast();

// 对加减乘除进行符号提取

String operator = (String)dataList.get(1);

// 对加减乘除进行符号提取

double n1 = Double.parseDouble(number1);

double n2 = Double.parseDouble(number2);

//对数据进行初始化设置

double n = 0;

//进行运算

if(operator.equals("+")){

n = n1 + n2;

}

else if(operator.equals("-")){

n = n1 - n2;

}

else if(operator.equals("*")){

n = n1 * n2;

}

else if(operator.equals("/")){

n = n1 / n2;

}

// 输出接果 并对输入的字符串进行输入

dataList.clear();

dataList.add("" + n);

dataList.add(fuhao);

resultShow.setText("" + n);

}

}

//如果按下的是“等号按钮”

else if(e.getSource() == equalButton){

equalButtonIsPressed = true;

//链表内有两个字符串时

if(dataList.size() == 2)

{

// 对加减乘除进行符号提取(详细注释同上)

String operator =

(String)dataList.get(1);

String num1 =

(String)dataList.getFirst();

double n1 =

Double.parseDouble(num1);

double n = 0;

if(operator.equals("+"))

{

n = n1 + n1;

}

else if(operator.equals("-"))

{

n = n1 - n1;

}

else if(operator.equals("*"))

{

n = n1 * n1;

}

else if(operator.equals("/"))

{

n = n1 / n1;

}

//清理链表

dataList.clear();

dataList.add("" + n);

resultShow.setText(""+n);

}

//链表内有三个字符串时

else if(dataList.size() == 3)

{

String number1 = (String)dataList.getFirst();

String number2 = (String)dataList.getLast();

String operator = (String)dataList.get(1);

double n1 = Double.parseDouble(number1);

double n2 = Double.parseDouble(number2);

double n = 0;

if(operator.equals("+")){

n = n1 + n2;

}

else if(operator.equals("-")){

n = n1 - n2;

}

else if(operator.equals("*")){

n = n1 * n2;

}

else if(operator.equals("/")){

n = n1 / n2;

}

dataList.clear();

dataList.add("" + n);

resultShow.setText("" + n);

}

}

//如果按下的是“小数点按钮”

else if(e.getSource() == dotButton){

if(dataList.size() == 0)

{

//默认输出“0.”

dataList.add("0.");

}

else if(dataList.size() == 1)

{

String num1 = dataList.getFirst();

//判断以前是否有过输入小数点,为-1时为没有加点

if(num1.indexOf('.') == -1)

{

String s = num1.concat(".");

dataList.set(0,s);

}

}

else if(dataList.size() == 2)

{

dataList.add("0.");

}

else if(dataList.size() == 3)

{

String num2 = dataList.getLast();

if(num2.indexOf('.') == -1)

{

String s = num2.concat(".");

dataList.set(2,s);

}

}

}

//如果按下的是“退格按钮”

else if(e.getSource() == backspaceButton){

if(dataList.size() == 1)

{

String num1 = dataList.getFirst();

String s ;

if(num1.length() > 1)

{

//截取字符串中的子串

s = num1.substring(0,num1.length()-1);

}

else

{

s = "0";

}

dataList.set(0,""+s);

resultShow.setText(s);

}

else if(dataList.size() == 3)

{

String num2 = dataList.getLast();

String s ;

if(num2.length() > 1)

{

s = num2.substring(0,num2.length()-1);

}

else

{

s = "0";

}

dataList.set(2,""+s);

resultShow.setText(s);

}

}

//如果按下的是“正负号按钮”

else if(e.getSource() == signButton){

if(dataList.size() == 1)

{

String num1 = dataList.getFirst();

double n1 = Double.parseDouble(num1);

n1 = -1 * n1;

dataList.set(0,""+n1);

resultShow.setText(""+n1);

}

else if(dataList.size() == 3)

{

String num2 = dataList.getLast();

double n2 = Double.parseDouble(num2);

n2 = -1 * n2;

dataList.set(2,""+n2);

resultShow.setText(""+n2);

}

}

//如果按下的是“倒数按钮”

else if(e.getSource() == reciprocalButton){

if(dataList.size() == 1)

{

String num1 = dataList.getFirst();

double n1 = Double.parseDouble(num1);

n1 = 1 / n1;

dataList.set(0,""+n1);

resultShow.setText(""+n1);

}

else if(dataList.size() == 3)

{

String num2 = dataList.getLast();

double n2 = Double.parseDouble(num2);

n2 = 1 / n2;

dataList.set(2,""+n2);

resultShow.setText(""+n2);

}

}

//如果按下的是“清零按钮”

else if(e.getSource() == clearZeroButton){

dataList.clear();

resultShow.setText("0");

}

}

public static void main(String[] args){

new ComputerPad();

}

}

这是主类 ~你建立一个类

还有两个分类

我在发给你

记得把我的名字该你的就可以拉

import javax.swing.*;

import java.awt.*;

public class NumberButton

extends JButton

{

private int number;

NumberButton(int number)

{

super("" + number);

this.number = number;

setForeground(Color.blue);

setFont(new Font("Serif", Font.BOLD,15));

}

public int getNumber()

{

return number;

}

}

///

import java.awt.Color;

import java.awt.Font;

import javax.swing.JButton;

public class OperationButton

extends JButton

{

private String operator;

OperationButton(String operator)

{

super(operator);

this.operator = operator;

setForeground(Color.RED);

setFont(new Font("Serif", Font.BOLD,15));

}

public String getOperator()

{

return operator;

}

}

本回答由提问者推荐

2Q==

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值