🔍 登录 注册

java之计算器的实现

大 大苹果 2017-05-11 linux 👁 5240 ⏱ 12min

java实现计算器程序,代码如下:

package code;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.regex.Pattern;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;

/**
 * 
 * @author Smart
 *
 */
public class Calculator extends JFrame implements ActionListener{
	private JMenuBar jmb;
    private JMenu jm;
    private JMenuItem jmi1;
    private JTextField result;
    private JButton key[];
    private JPanel jp_but,jp_cal;
    private Mainpad jp_main;
    private Container con;
    private double opernum;
    private String keytitle[]={"7", "8", "9", "+", "4", "5", "6", "-", "1", "2", "3", "*", "0", ".", "=", "/", "!", "^", "C", "-/+", "1/x", "sqrt", "四舍五入", "back"}, 
    		opers = "";
    public Calculator()
    {
    	this.setSize(400,450);
    	this.setTitle("计算器");
    	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	this.jmb=new JMenuBar();
    	this.jm=new JMenu("文件");
    	this.jmi1=new JMenuItem("退出");
    	this.jm.add(this.jmi1);
    	this.result=new JTextField();
    	this.key=new JButton[24];
    	this.jp_but=new JPanel();
    	this.jp_cal=new JPanel();
    	this.jp_main=new Mainpad();
    	this.con=this.getContentPane();
    	this.jp_but.setLayout(new GridLayout(6,4,5,5));
    	this.jp_cal.setLayout(new BorderLayout());
    	this.jp_main.setLayout(new BorderLayout());
    	this.con.setLayout(new BorderLayout());
    	Font font = this.result.getFont();
    	this.result.setFont(new Font(font.getName(), font.getStyle(), 24));
    	for(int i=0;i<24;i++) {
	    	this.key[i]=new JButton(this.keytitle[i]);	
	    	this.key[i].setSize(60, 60);
	    	this.key[i].addActionListener(this);
	    	this.jp_but.add(key[i]);
	    	//System.out.println(i);
    	}
    	this.jmb.add(jm);
    	this.jp_main.add(jmb,BorderLayout.NORTH);
    	this.jp_main.add(jp_cal,BorderLayout.CENTER);
    	this.jp_cal.add(result,BorderLayout.NORTH);
    	this.jp_cal.add(this.jp_but,BorderLayout.CENTER);
    	this.con.add(jp_main);
    	this.jmi1.addActionListener(this);     
    	this.setBackground(Color.RED);
    	this.setLocation(400, 100);
    	this.setVisible(true);
    	
    }
	public static void main(String[] args) 
	{
		new Calculator();
	}
	@Override
	public void actionPerformed(ActionEvent evt) 
	{
		// TODO Auto-generated method stub
		//System.out.println(evt.getActionCommand());
		String oper=evt.getActionCommand();
		switch(oper) {
			case "0":
				this.result.setText(this.result.getText()+oper);
				break;
			case "1":
				this.result.setText(this.result.getText()+oper);
				break;
			case "2":
				this.result.setText(this.result.getText()+oper);
				break;
			case "3":
				this.result.setText(this.result.getText()+oper);
				break;
			case "4":
				this.result.setText(this.result.getText()+oper);
				break;
			case "5":
				this.result.setText(this.result.getText()+oper);
				break;
			case "6":
				this.result.setText(this.result.getText()+oper);
				break;
			case "7":
				this.result.setText(this.result.getText()+oper);
				break;
			case "8":
				this.result.setText(this.result.getText()+oper);
				break;
			case "9":
				this.result.setText(this.result.getText()+oper);
				break;
			case "+":
				this.opernum = Double.valueOf(this.result.getText());
				this.result.setText("");
				this.opers = "+";
				break;
			case "-":
				this.opernum = Double.valueOf(this.result.getText());
				this.result.setText("");
				this.opers = "-";
				break;
			case "*":
				this.opernum = Double.valueOf(this.result.getText());
				this.result.setText("");
				this.opers = "*";
				break;
			case "/":
				this.opernum = Double.valueOf(this.result.getText());
				this.result.setText("");
				this.opers = "/";
				break;
			case ".":
				this.result.setText(this.result.getText()+oper);
				break;
			case "^":
				this.opernum=Double.valueOf(this.result.getText());
				this.result.setText(this.result.getText()+"^");
				this.opers="^";
				break;
			case "-/+":
				this.result.setText(String.valueOf(-Double.valueOf(this.result.getText())));
				break;
			case "1/x":
				this.result.setText(String.valueOf(1/(Double.valueOf(this.result.getText()))));
				break;
			case "sqrt":
				this.result.setText(String.valueOf(Math.sqrt(Double.valueOf(this.result.getText()))));
				break;
			case "四舍五入":
				this.result.setText(String.valueOf((int) (Double.valueOf(this.result.getText())+0.5)));
				break;
			case "back":
				if(this.result.getText().length()>0)
					this.result.setText(this.result.getText().substring(0, this.result.getText().length()-1));
				break;
			case "C":
				this.result.setText("");break;
			case "!":
				this.result.setText(String.valueOf(this.JieCheng(Double.valueOf(this.result.getText()))));
				break;
			case "=":
				switch(this.opers) {
					case "+":
						this.result.setText (String.valueOf(this.opernum+Double.valueOf(this.result.getText())));
						break;
					case "-":
						this.result.setText (String.valueOf(this.opernum-Double.valueOf(this.result.getText())));
						break;
					case "*":
						this.result.setText (String.valueOf(this.opernum*Double.valueOf(this.result.getText())));
						break;
					case "/":
						this.result.setText (String.valueOf(this.opernum/Double.valueOf(this.result.getText())));
						break;
					case "^":
						this.result.setText( String.valueOf((Math.pow(this.opernum, Integer.valueOf(this.result.getText().toString().substring (this.result.getText().toString().indexOf('^')+1)))))); 
						break;
					default:
				}
				break;
			case "退出":	
				System.exit(0);
		}
	}
	public long JieCheng(double n3)
	{
		long n = (long)(n3 + 0.5);
		if(n==1 || n==0)
			return n;
		else if(n>1) {
			return n*JieCheng(n-1);
		} else {
			return 0;
		}
	}
    public boolean isDot(String num)
    {
    	if(Pattern.matches("[0-9].*", num)) {
    		return false;
    	} else {
    		return true;
    	}
    }
}

class Mainpad extends JPanel{
	public Mainpad()
	{
		this.setBackground(Color.RED);
	}
}


读完了?给作者一点支持

本文采用 CC BY 4.0 协议转载 · © 大苹果

评论(0)

登录 后参与评论。

  • 还没有评论,来抢沙发。

🔗 相关文章

Mysql 表被标记为崩溃,最后一次自动化修复失败

当 MySQL 日志中出现“表被标记为崩溃且自动修复失败”的提示时,通常表示 MySQL 在启动过程中检测到某个表的文件系统或存储引擎层出现了问题。这种情况通常会导致表无法正常使用,需要手动进行修复。以下是处理这种情况的一些步骤和方法: ### 1. **查看具体错误信息** 首先,需要查看 MySQL 错误日志以获取更多的错误信息。这可以帮助确定崩溃的表和具体的问题。 ```bash # 查看 MySQL 错误日志 tail -f /var/log/mysql/error.log ``` ### 2. **修复表** 不同的存储引擎有不同的修复工具,以下是常用的修复方法: #### **使用 `myisamchk` 修复 MyISAM 表** 如果崩溃的表使用的是 MyISAM 存储引擎,可以使用 `myisamchk` 工具来修复表。 1. 停止 MySQL 服务: ```bash sudo systemctl stop mysql ``` 2. 使用 `myisamchk` 修复表:

2024/8/11👍 0

mermaid.min.js的使用及介绍

`mermaid.min.js` 是一个 JavaScript 库,用于在浏览器中轻松绘制复杂的图表和流程图。Mermaid 通过使用简单的标记语言来描述图表,使得用户无需深入学习图表绘制的底层技术即可创建专业的图形。 在这篇文章中,我们将介绍 `mermaid.min.js` 的功能、应用场景、如何在项目中使用,以及一些常用的示例。 ## Mermaid 的功能 Mermaid 支持多种类型的图表,包括但不限于: 1. **流程图(Flowchart)**: - 用于表示流程或过程中的步骤。 - 支持各种节点和连线风格。 2. **序列图(Sequence Diagram)**: - 用于表示对象之间的交互。 - 展示消息的发送和接收过程。 3. **类图(Class Diagram)**: - 用于表示类及其关系。 - 支持类的属性和方法定义。 4. **状态图(State Diagram)**: - 用于描述系统状态及其转换。 - 适用于复杂的状态机建模。 5. **甘

2024/8/9👍 0

docker之Dockerfile及docker compose配置文件的说明及使用

Docker 的配置文件对于镜像构建和容器化应用的管理至关重要。在 Docker 中,主要的配置文件是 Dockerfile 和 docker-compose.yml。Dockerfile 用于构建镜像,而 docker-compose.yml 用于定义多容器应用。下面将详细介绍这两个文件的配置选项和用法。 ## Dockerfile 配置详解 **Dockerfile** 是一个文本文件,其中包含一组指令,用于定义如何构建 Docker 镜像。以下是 Dockerfile 中常用的指令及其用法: ### FROM `FROM` 指令用于指定基础镜像,是 Dockerfile 中的第一条指令。 ```dockerfile FROM node:14 ``` 上例中,`node:14` 是官方的 Node.js 版本 14 的镜像。 ### LABEL `LABEL` 用于为镜像添加元数据,以键值对形式存在。 ```dockerfile LABEL maintainer="your-email@example.com" LABE

2024/8/9👍 0