用java写一个简单计算器

这篇博客主要介绍了使用Java编程实现一个简单计算器的过程,旨在学习JFrame容器和网格布局的应用。文中包含1.0和2.0两个版本的实现详情。
摘要由CSDN通过智能技术生成

通过Java编写这个计算器,主要是用来学习JFrame容器网格布局的。

学习JFrame的博客,感谢博主分享。     java计算器实例中,本博客共有两个版本。

1.0版本:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.StringTokenizer;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

/*
 * 以下的方法调用前都没有添加对象名,创建对象后,对象会自动获取这些初始值
 */
class GridFrame extends JFrame{
	//定义面板,并设置为网格布局,4行4列,组件水平、垂直间距均为3
	JPanel p = new JPanel(new GridLayout(4, 4, 3, 3));
	//定义文本框
	JTextField t = new JTextField();
	//JTextArea t = new JTextArea();
	//定义字符串数组,为按钮的显示文本赋值
	String str[] = {"7","8","9","/","4","5","6","*","1","2","3","-",".","0","=","+"};
//	JButton equ;
	
	public GridFrame(String s) {
		//为窗体名称赋值
		super(s);
		setLayout(new BorderLayout());//定义窗体布局为边界布局
		JButton btn[];//声明按钮数组
		btn = new JButton[str.length];//创建按钮数组
		
		//循环定义按钮,并添加到面板中
		for(int i = 0; i < str.length; i ++) {
//			if(i == 14) {
//				equ = new JButton("=");
//				p.add(equ);
//				continue;
//			}
			btn[i] = new JButton(str[i]);
			p.add(btn[i]);
		}
		
		
		//将文本框放在窗体的NORTH位置
		getContentPane().add(t,BorderLayout.NORTH);
		//将面板放在窗体的中心位置
		getContentPane().add(p,BorderLayout.CENTER);
		//设置背景颜色
		p.setBackground(Color.PINK);
		//设置窗体属性
		setVisible(true);//设置窗体可见
		//setResizable(false);设置窗体是否可以调整大小,默认是可以的
		setSize(400, 500);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置通过关闭按钮可关闭
		setLocationRelativeTo(null);//让窗体居中显示
		
		//为各按钮添加事件处理(不包含等于号)
		for(int i = 0; i < str.length; i ++) {
			if(i == 14)
				continue;
			Text(btn[i]);
		}
		//为“=”号添加事件处理
		btn[14].addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				t.setText(t.getText()+btn[14].getText());
				
				if(t.getText().contains("+")) {
					StringTokenizer st1 = new StringTokenizer(t.getText(),"+");
					double d1,d2 = 0;
					d1 = Double.parseDouble(st1.nextToken());
					while(st1.hasMoreTokens()) {
						StringTokenizer st2 = new StringTokenizer(st1.nextToken(),"=");
						d2 = Double.parseDouble(st2.nextToken());
					}
					t.setText(t.getText()+(d1+d2));
				}
				else if(t.getText().contains("-")){
					StringTokenizer st1 = new StringTokenizer(t.getText(),"-");
					double d1,d2 = 0;
					d1 = Double.parseDouble(st1.nextToken());
					while(st1.hasMoreTokens()) {
						StringTokenizer st2 = new StringTokenizer(st1.nextToken(),"=");
						d2 = Double.parseDouble(st2.nextToken());
					}
					t.setText(t.getText()+(d1-d2));
				}
				else if(t.getText().contains("*")){
					StringTokenizer st1 = new StringTokenizer(t.getText(),"*");
					double d1,d2 = 0;
					d1 = Double.parseDouble(st1.nextToken());
					while(st1.hasMoreTokens()) {
						StringTokenizer st2 = new StringTokenizer(st1.nextToken(),"=");
						d2 = Double.pars
当然可以。下面是一个简单的Java控制台版计算器程序示例,它实现了基本的加、减、乘、除功能: ```java import java.util.Scanner; class Calculator { // 加法 static int add(int a, int b) { return a + b; } // 减法 static int subtract(int a, int b) { return a - b; } // 乘法 static int multiply(int a, int b) { return a * b; } // 除法,处理除数为0的情况 static double divide(int a, int b) { if (b != 0) { return (double) a / b; } else { System.out.println("Error! Division by zero is not allowed."); return 0; } } } public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入运算符 (+, -, *, /):"); String operator = scanner.next(); System.out.println("请输入第一个数字:"); int num1 = scanner.nextInt(); System.out.println("请输入第二个数字:"); int num2 = scanner.nextInt(); switch (operator) { case "+": System.out.println("结果是: " + Calculator.add(num1, num2)); break; case "-": System.out.println("结果是: " + Calculator.subtract(num1, num2)); break; case "*": System.out.println("结果是: " + Calculator.multiply(num1, num2)); break; case "/": double result = Calculator.divide(num1, num2); System.out.printf("结果是: %.2f\n", result); break; default: System.out.println("无效的运算符,请输入 +, -, *, 或 /."); break; } scanner.close(); } } ``` 用户可以在命令行中运行这个程序,按照提示输入运算符和数字进行计算。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值