【Java】——实现可视化加减乘除计算器

这篇具有很好参考价值的文章主要介绍了【Java】——实现可视化加减乘除计算器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🎃个人专栏:

🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客

🐳Java基础:Java基础_IT闫的博客-CSDN博客

🐋c语言:c语言_IT闫的博客-CSDN博客

🐟MySQL:数据结构_IT闫的博客-CSDN博客

🐠数据结构:​​​​​​数据结构_IT闫的博客-CSDN博客

💎C++:C++_IT闫的博客-CSDN博客

🥽C51单片机:C51单片机(STC89C516)_IT闫的博客-CSDN博客

💻基于HTML5的网页设计及应用:基于HTML5的网页设计及应用_IT闫的博客-CSDN博客​​​​​​

🥏python:python_IT闫的博客-CSDN博客

🐠离散数学:离散数学_IT闫的博客-CSDN博客

欢迎收看,希望对大家有用!

目录

🎯功能简介:

🎯分块分析:

💎导入包和声明全局变量:

💎创建界面并添加组件:

💎添加事件监听器:

💎整合逻辑:

💎程序不足:

🎯整改建议:

🎯源代码:

 🎯展示视频:


🎯功能简介:

这是一个简单的计算器小程序,可以进行加、减、乘、除四则运算。界面分为一个屏幕和多个按钮,通过按钮输入数字和运算符,同时在屏幕上显示输入内容和计算结果。具体实现包括:

  1. 界面布局:使用GridLayout布局,将界面分为6个部分,分别放置屏幕和按钮。

  2. 数字输入:通过按钮监听,每次点击数字按钮将数字添加到字符串s中,并在屏幕上显示当前输入内容。

  3. 运算符输入:同样通过按钮监听,点击运算符按钮时保存当前输入的数字,清空输入框,将运算符保存在flag中。

  4. 计算结果:在等号按钮监听中,根据flag值选择进行加、减、乘、除四则运算,并将结果显示在屏幕上。其中,除法运算需要特判被除数为0的情况。

🎯分块分析:

💎导入包和声明全局变量:

package one;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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

public class MyCalculator1 {
	static int num1 = 0;
	static int num2 = 0;
	static String s = "";
	static String flag = "";

在这一部分中,我们导入了所需的包,并声明了四个静态变量 num1num2sflag


💎创建界面并添加组件:

public static void main(String[] args) {
	// TODO Auto-generated method stub
	JFrame win1 = new JFrame("计算器小程序");
	win1.setBounds(200, 200, 500, 700);
	win1.setDefaultCloseOperation(3);
	win1.setVisible(true);

	win1.setLayout(new GridLayout(6, 1));
	JPanel p1 = new JPanel(new GridLayout(1, 1));// 放屏幕的;
	JPanel p2 = new JPanel(new GridLayout(1, 4));// 放+-*/Button的;
	JPanel p3 = new JPanel(new GridLayout(1, 3));// 放789Button的;
	JPanel p4 = new JPanel(new GridLayout(1, 3));// 放456Button的;
	JPanel p5 = new JPanel(new GridLayout(1, 3));// 放123Button的;
	JPanel p6 = new JPanel(new GridLayout(1, 3));// 放C0=的;
	JTextField text = new JTextField();

	JButton bt_add = new JButton("+");
	JButton bt_sub = new JButton("-");
	JButton bt_mul = new JButton("×");
	JButton bt_div = new JButton("÷");

	JButton bt_7 = new JButton("7");
	JButton bt_8 = new JButton("8");
	JButton bt_9 = new JButton("9");
	JButton bt_4 = new JButton("4");
	JButton bt_5 = new JButton("5");
	JButton bt_6 = new JButton("6");
	JButton bt_1 = new JButton("1");
	JButton bt_2 = new JButton("2");
	JButton bt_3 = new JButton("3");
	JButton bt_c = new JButton("c");
	JButton bt_0 = new JButton("0");
	JButton bt_equ = new JButton("=");

	win1.add(p1);
	win1.add(p2);
	win1.add(p3);
	win1.add(p4);
	win1.add(p5);
	win1.add(p6);

	p1.add(text);
	p2.add(bt_add);
	p2.add(bt_sub);
	p2.add(bt_mul);
	p2.add(bt_div);

	p3.add(bt_7);
	p3.add(bt_8);
	p3.add(bt_9);
	p4.add(bt_4);
	p4.add(bt_5);
	p4.add(bt_6);
	p5.add(bt_1);
	p5.add(bt_2);
	p5.add(bt_3);
	p6.add(bt_c);
	p6.add(bt_0);
	p6.add(bt_equ);

         在这一部分中,我们创建了一个 JFrame 窗口,并且设置了窗口的基本属性(标题、大小、位置、关闭方式等)。然后,我们使用 GridLayout 布局管理器创建了六个面板,并将它们添加到窗口中。接着,我们创建了所需的组件(屏幕、按钮),并将它们添加到对应的面板中。


💎添加事件监听器:

bt_0.addActionListener(new ActionListener() {

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		s = s + "0";
		text.setText(s);
	}
});

bt_1.addActionListener(new ActionListener() {

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		s = s + "1";
		text.setText(s);
	}
});

...

bt_add.addActionListener(new ActionListener() {

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		flag = "+";
		num1 = Integer.valueOf(text.getText());
		s = "";
		text.setText("");
	}
});

...

bt_equ.addActionListener(new ActionListener() {

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		int sum = 0;

		num2 = Integer.valueOf(text.getText());
		switch (flag) {
		case "+":
			sum = num1 + num2;
			break;
		case "-":
			sum = num1 - num2;
			break;
		case "×":
			sum = num1 * num2;
			break;
		case "÷":
			if (num2 == 0) {
				num2 = num2 + 1;
			}
			sum = num1 / num2;
			break;
		default:
			break;
		}
			String value = String.valueOf(num1) + " " + flag + " " + String.valueOf(num2) + " = "
					+ String.valueOf(sum);
			text.setText(String.valueOf(value));
		
	}
});

         在这一部分中,我们为每个按钮添加了事件监听器,并实现了响应的功能。例如,当用户点击数字按钮时,我们将数字添加到字符串变量 s 中,并将其显示在屏幕上;当用户点击加号按钮时,我们将其作为标志变量 flag 的值,并将屏幕上的数字赋给变量 num1


💎整合逻辑:

int sum = 0;

num2 = Integer.valueOf(text.getText());
switch (flag) {
case "+":
	sum = num1 + num2;
	break;
case "-":
	sum = num1 - num2;
	break;
case "×":
	sum = num1 * num2;
	break;
case "÷":
	if (num2 == 0) {
		num2 = num2 + 1;
	}
	sum = num1 / num2;
	break;
default:
	break;
}
	String value = String.valueOf(num1) + " " + flag + " " + String.valueOf(num2) + " = "
			+ String.valueOf(sum);
	text.setText(String.valueOf(value));

         在这一部分中,我们处理了用户点击等号按钮后的逻辑。我们根据标志变量 flag 的值,对两个数字进行相应的运算,并将结果显示在屏幕上。

💎程序不足:

  1. 没有对用户输入进行验证:程序没有对用户输入进行验证,如果用户输入非数字字符或者特殊字符,可能会导致程序崩溃或输出错误结果。

  2. 不支持小数运算:程序只支持整数运算,无法处理带小数点的数字。

  3. 操作顺序限制:该计算器只支持两个操作数的连续运算,不能处理多个操作符连续操作的情况。

  4. 缺乏界面美化:界面设计比较简单,缺乏美观性和用户友好性。

  5. 代码结构不清晰:代码中存在大量的重复代码,可读性和维护性较差。

  6. 未处理除数为0的情况:虽然在除法运算时判断了除数是否为0,但只是简单地将除数加1而没有给出合适的提示。


🎯整改建议:

  1. 添加输入验证逻辑,确保用户输入的有效性。
  2. 添加异常处理机制,处理可能发生的异常情况。
  3. 重新设计代码结构,使用实例变量和方法来组织代码。
  4. 调整界面布局,使按钮的大小和位置更合理美观。

🎯源代码:

package one;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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

public class MyCalculator1 {
	static int num1 = 0;
	static int num2 = 0;
	static String s = "";
	static String flag = "";

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		JFrame win1 = new JFrame("计算器小程序");
		win1.setBounds(200, 200, 500, 700);
		win1.setDefaultCloseOperation(3);
		win1.setVisible(true);

		win1.setLayout(new GridLayout(6, 1));
		JPanel p1 = new JPanel(new GridLayout(1, 1));// 放屏幕的;
		JPanel p2 = new JPanel(new GridLayout(1, 4));// 放+-*/Button的;
		JPanel p3 = new JPanel(new GridLayout(1, 3));// 放789Button的;
		JPanel p4 = new JPanel(new GridLayout(1, 3));// 放456Button的;
		JPanel p5 = new JPanel(new GridLayout(1, 3));// 放123Button的;
		JPanel p6 = new JPanel(new GridLayout(1, 3));// 放C0=的;
		JTextField text = new JTextField();

		JButton bt_add = new JButton("+");
		JButton bt_sub = new JButton("-");
		JButton bt_mul = new JButton("×");
		JButton bt_div = new JButton("÷");

		JButton bt_7 = new JButton("7");
		JButton bt_8 = new JButton("8");
		JButton bt_9 = new JButton("9");
		JButton bt_4 = new JButton("4");
		JButton bt_5 = new JButton("5");
		JButton bt_6 = new JButton("6");
		JButton bt_1 = new JButton("1");
		JButton bt_2 = new JButton("2");
		JButton bt_3 = new JButton("3");
		JButton bt_c = new JButton("c");
		JButton bt_0 = new JButton("0");
		JButton bt_equ = new JButton("=");

		win1.add(p1);
		win1.add(p2);
		win1.add(p3);
		win1.add(p4);
		win1.add(p5);
		win1.add(p6);

		p1.add(text);
		p2.add(bt_add);
		p2.add(bt_sub);
		p2.add(bt_mul);
		p2.add(bt_div);

		p3.add(bt_7);
		p3.add(bt_8);
		p3.add(bt_9);
		p4.add(bt_4);
		p4.add(bt_5);
		p4.add(bt_6);
		p5.add(bt_1);
		p5.add(bt_2);
		p5.add(bt_3);
		p6.add(bt_c);
		p6.add(bt_0);
		p6.add(bt_equ);

		bt_0.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				s = s + "0";
				text.setText(s);
			}
		});

		bt_1.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				s = s + "1";
				text.setText(s);
			}
		});

		bt_2.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				s = s + "2";
				text.setText(s);
			}
		});

		bt_3.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				s = s + "3";
				text.setText(s);
			}
		});

		bt_4.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				s = s + "4";
				text.setText(s);
			}
		});

		bt_5.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				s = s + "5";
				text.setText(s);
			}
		});

		bt_6.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				s = s + "6";
				text.setText(s);
			}
		});

		bt_7.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				s = s + "7";
				text.setText(s);
			}
		});

		bt_8.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				s = s + "8";
				text.setText(s);
			}
		});

		bt_9.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				s = s + "9";
				text.setText(s);
			}
		});

		bt_c.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				num1 = 0;
				num2 = 0;
				flag = "";
				s = "";
				text.setText("");
			}
		});

		bt_add.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				flag = "+";
				num1 = Integer.valueOf(text.getText());
				s = "";
				text.setText("");
			}
		});

		bt_sub.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				flag = "-";
				num1 = Integer.valueOf(text.getText());
				s = "";
				text.setText("");
			}
		});

		bt_mul.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				flag = "×";
				num1 = Integer.valueOf(text.getText());
				s = "";
				text.setText("");
			}
		});

		bt_div.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				flag = "÷";
				num1 = Integer.valueOf(text.getText());
				s = "";
				text.setText("");
			}
		});

		bt_equ.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				int sum = 0;

				num2 = Integer.valueOf(text.getText());
				switch (flag) {
				case "+":
					sum = num1 + num2;
					break;
				case "-":
					sum = num1 - num2;
					break;
				case "×":
					sum = num1 * num2;
					break;
				case "÷":
					if (num2 == 0) {
						num2 = num2 + 1;
					}
					sum = num1 / num2;
					break;
				default:
					break;
				}
					String value = String.valueOf(num1) + " " + flag + " " + String.valueOf(num2) + " = "
							+ String.valueOf(sum);
					text.setText(String.valueOf(value));
				
			}
		});

	}

}

 🎯展示视频:

【Java】——实现可视化加减乘除计算器文章来源地址https://www.toymoban.com/news/detail-751585.html

到了这里,关于【Java】——实现可视化加减乘除计算器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JAVA中char类型加减乘除运算表达式返回类型

    我们都知道java中,如果char类型和int类型做加减法,那么char类型会被精度提升至int类型然后参与运算,返回的也是int类型的数据。 那么如果表达式中参与运算的 均为char类型 ,那么表达式返回的类型是什么呢? 经过简单测试,是 int类型 。 这个问题是在调用StringBuilder.appen

    2024年02月08日
    浏览(55)
  • 用Vue的三种方法实现加减乘除运算

    js插件:vue.js 教程: 首先在工具内引入vue.js 然后在body里面创建一个div并设置id,我这里给id命名为\\\"app\\\" 在id命名为\\\"app\\\"的div内使用input标签和select标签来设置运算框 然后用 methods方法 computed方法 watch(侦听器)方法 做出3种不同的加减乘除运算 第一种computed方法: 接下来我们在

    2024年02月09日
    浏览(114)
  • 【python&flask-1】简单实现加减乘除输入界面

    app.py index.html result.html 支持小数点计算

    2024年02月09日
    浏览(39)
  • 【Java版oj】day27不用加减乘除做加法、三角形

    目录  一、不用加减乘除做加法 (1)原题再现 (2)问题分析 (3)完整代码  二、三角形 (1)原题再现 (2)问题分析 (3)完整代码 不用加减乘除做加法__牛客网 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 输入 1,2 输出 3 输入 0,0

    2023年04月16日
    浏览(59)
  • linux|shell编程|shell脚本内的加减乘除运算实现示例

    shell脚本内的加减乘除是由于在编写kubernetes巡检脚本的时候,某些部分需要做一点简单的运算,突然发现我其实对这些不太熟悉。 因此,查阅了一些资料,现在就加减乘除运算在shell脚本内如何应用做一个简单的总结,写的不对的地方请各位轻点喷 首先,我们看一个错误的示

    2024年02月17日
    浏览(43)
  • bigdecimal加减乘除运算

    打印的结果如下: 打印结果如下: 打印结果如下:

    2024年02月11日
    浏览(44)
  • 高精度(加减乘除)

    高精度的核心思想就是利用数组去储存大数,然后通过模拟手动计算的方式,来进行计算。 主要分三个模块: 1.读入数据并转换为(int)类型储存 核心思想:将每个位上的数字都+起来,如果大于10就进位。 核心代码如下: 完整代码及解析如下: 减法核心:只使用大数减小数

    2024年02月08日
    浏览(47)
  • 不用加减乘除做加法

    写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号,本题OJ链接 数据范围:两个数都满足 −10≤n≤1000 进阶:空间复杂度 O(1),时间复杂度 O(1) 分析 :本题要求不能使用+、-、*、/,所以我们应该从二进制的角度去考虑,因为二进制的加法可以通

    2024年02月10日
    浏览(39)
  • 图像四则运算(加减乘除)

    实验目的: 1.了解图像的算术运算在数字图像处理中的初步应用。 2.体会图像算术运算处理的过程和处理前后图像的变化。 3.能够实现简单的图像处理 实验原理: 图像的代数运算包括加,减,乘,除,这些运算的主要对象是图像数据块中的数据。这四种代数运算可以由如

    2024年02月08日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包