Java【四则运算计算器】_java四则运算计算器,零基础入门到精通,收藏这篇就够了

Swing 编程

Swing 是 Java 基类的一部分,是基于 AWT 开发的;AWT 是 Java 语言开发用户界面程序的基本工具包,是 Swing 的基础。Swing 提供了大量的轻量级组件,还提供了一个用于实现包含插入式界面样式等特性的GUI的下层构件,使得 Swing 组件在不同的平台上都能够保持组件的界面样式特性。

由 Swing 提供的组件几乎都是轻量级组件,其中提供的少数重量级组件都是必需的。因为轻量级组件是绘制在包含它的容器中的,而不是绘制在它自己的窗口中的,所以,轻量级组件最终必须包含在一个重量级的容器中;因此,由 Swing 提供的小应用程序、窗体、窗口和对话框都必须是重量级组件,以便提供一个可以用来绘制 Swing 轻量级组件的窗口。

JFrame 窗体和常用面板

在编程中,可以将面板添加到 JFrame 窗体中,也可以将子面板添加到上级面板中,然后将组件添加到面板中。通过面板可以对所有组件进行分层管理,即对不同关系的组件采用不同的布局管理方式,使组件的布局更合理,软件的界面更美观。

JPanel 面板

如果将所有的组件都添加到由 JFrame 窗体提供的默认组件容器中,将存在如下两个问题:

(1) 一个界面中的所有组件只能采用一种布局方式,这样很难得到一个富于变化的界面。
(2) 有些布局方式只能管理有限个组件,例如JFrame窗体默认的BorderLayout布局管理器最多只能管理5个组件。

这两个问题通过使用JPanel面板就可以解决。首先将面板和组件添加到JFrame窗体中,然后再将子面板和组件添加到上级面板中,这样就可以向面板中添加数量不限的组件,并且通过对每个面板采用不同的布局管理器,真正解决众多组件的布局问题。JPanel面板默认采用FlowLavout布局管理器。

JScrollPane 面板

JScrollPane 类实现了一个带滚动条的面板,以下是它的常用方法:

1、getViewport():返回滚动窗格的视图端口,可以用来获取或设置视图组件

2、setViewportView(Component view):设置滚动窗格的视图组件

3、getVerticalScrollBar():返回垂直滚动条 getHorizontalScrollBar():返回水平滚动条

4、setVerticalScrollBarPolicy(int policy):设置垂直滚动条的显示策略,常用的策略(静态常量)有:

  • VERTICAL_SCROLLBAR_AS_NEEDED(20):当需要时显示垂直滚动条
  • VERTICAL_SCROLLBAR_NEVER(21):从不显示垂直滚动条
  • JScrollPane.VERTICAL_SCROLLBAR_ALWAYS(22):始终显示垂直滚动条

5、setHorizontalScrollBarPolicy(int policy):设置水平滚动条的显示策略,常用的策略(静态常量)有:

  • HORIZONTAL_SCROLLBAR_AS_NEEDED(30):当需要时显示水平滚动条
  • HORIZONTAL_SCROLLBAR_NEVER(31):从不显示水平滚动条
  • HORIZONTAL_SCROLLBAR_ALWAYS(32):始终显示水平滚动条

6、scrollToVisible(Rectangle r):滚动到指定的矩形区域可见

7、getPreferredSize():返回滚动窗格的首选大小,通常基于视图组件的大小和滚动条的状态

8、setRowHeaderView(Component rowHeaderView):设置行头视图组件,通常用于表格的行头

9、setColumnHeaderView(Component columnHeaderView):设置列头视图组件,通常用于表格的列头

10、getCorner(int corner):返回指定角的组件,例如滚动窗格的左上角、右下角等

11、setCorner(int corner, Component component):设置指定角的组件


结果展示

初始界面:

运算测试:只显示当前输入的量、中间结果和最后结果

①9+8=17

②3-8=-5

③3*4+9-5=16

④54/9+8*14-9*7=错误

缺陷:没有考虑优先计算。

完整代码如下
package com.calculator.example; // 自定义包名(组织和管理类) import javax.swing.*; // 导入Swing库,用于创建图形用户界面 import java.awt.*; // 导入AWT库,用于定义组件的布局和外观 import java.awt.event.ActionEvent; // 导入ActionEvent类,用于表示按钮点击事件 import java.awt.event.ActionListener; // 导入ActionListener接口,用于处理按钮点击事件 public class SimpleCalculator extends JFrame { // 创建SimpleCalculator类,继承自JFrame,表示一个窗口 private JTextField display; // 定义一个文本框,用于显示计算结果 private double result = 0; // 用于存储计算结果,初始值为0 private String operator = "="; // 用于存储当前的运算符,初始值为"=" private boolean start = true; // 用于标记是否开始新的计算,初始值为true public SimpleCalculator() { // 构造方法,用于初始化SimpleCalculator对象 // 创建显示结果的文本框 display = new JTextField("0"); // 初始化文本框,初始内容为"0" display.setEditable(false); // 设置文本框为不可编辑状态 display.setHorizontalAlignment(JTextField.RIGHT); // 设置文本框的内容右对齐 display.setFont(new Font("Arial", Font.PLAIN, 40)); // 设置文本框的字体为Arial,普通样式,大小为24 // 创建面板来放置按钮 JPanel panel = new JPanel(); // 创建一个JPanel对象,用于放置按钮 panel.setLayout(new GridLayout(4, 4)); // 设置面板的布局为4行4列的网格布局 // 添加按钮 addButton(panel, "7"); addButton(panel, "8"); addButton(panel, "9"); addButton(panel, "/"); addButton(panel, "4"); addButton(panel, "5"); addButton(panel, "6"); addButton(panel, "*"); addButton(panel, "1"); addButton(panel, "2"); addButton(panel, "3"); addButton(panel, "-"); addButton(panel, "0"); addButton(panel, "."); addButton(panel, "="); addButton(panel, "+"); // 设置窗口布局 setLayout(new BorderLayout()); // 设置窗口的布局为边界布局 add(display, BorderLayout.NORTH); // 将文本框添加到窗口的北部区域 add(panel, BorderLayout.CENTER); // 将面板添加到窗口的中心区域 // 设置窗口属性 setTitle("Simple Calculator"); // 设置窗口的标题为"Simple Calculator" setSize(400, 400); // 设置窗口的大小为400x400像素 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置窗口的默认关闭操作为退出程序 setLocationRelativeTo(null); // 将窗口置于屏幕中央 setVisible(true); // 设置窗口为可见状态 } private void addButton(Container c, String label) { // 定义addButton方法,用于向容器中添加按钮 JButton button = new JButton(label); // 创建一个JButton对象,按钮的文本为label button.setPreferredSize(new Dimension(38, 35)); // 设置按钮的首选大小为80x80像素 button.setFont(new Font("Arial", Font.BOLD, 20)); // 设置按钮的字体为Arial,普通样式,大小为18 button.addActionListener(new ActionListener() { // 为按钮添加动作监听器 @Override public void actionPerformed(ActionEvent e) { // 定义动作事件的处理逻辑 String cmd = e.getActionCommand(); // 获取按钮的文本内容 if (cmd.charAt(0) >= '0' && cmd.charAt(0) <= '9' || cmd.equals(".")) { // 如果按钮文本是数字或小数点 if (start) { // 如果是新的计算开始 display.setText(cmd); // 将文本框的内容设置为按钮的文本 start = false; // 标记为非新的计算开始 } else { // 如果不是新的计算开始 display.setText(display.getText() + cmd); // 将按钮的文本追加到文本框的内容后面 } } else { // 如果按钮文本是运算符 if (start) { // 如果是新的计算开始 if (cmd.equals("-")) { // 如果按钮文本是"-" display.setText(cmd); // 将文本框的内容设置为"-" start = false; // 标记为非新的计算开始 } else { // 如果按钮文本不是"-" operator = cmd; // 更新当前的运算符 } } else { // 如果不是新的计算开始 calculate(Double.parseDouble(display.getText())); // 将文本框的内容转换为数字并调用calculate方法进行计算 operator = cmd; // 更新当前的运算符 start = true; // 标记为新的计算开始 } } } }); c.add(button); // 将按钮添加到容器中 } private void calculate(double x) { // 定义calculate方法,用于执行四则运算 switch (operator) { // 根据当前的运算符执行相应的运算 case "+": // 如果运算符是"+" result += x; // 将x加到result上 break; case "-": // 如果运算符是"-" result -= x; // 从result中减去x break; case "*": // 如果运算符是"*" result *= x; // 将result乘以x break; case "/": // 如果运算符是"/" result /= x; // 将result除以x break; case "=": // 如果运算符是"=" result = x; // 将result设置为x break; } display.setText("" + result); // 将计算结果显示在文本框中 } public static void main(String[] args) { // 主方法,程序的入口点 new SimpleCalculator(); // 创建一个SimpleCalculator对象,启动计算器程序 } }

这是小红书上一位上海的Java程序员失业想转行的分享贴。

Java开发的就业市场正在经历结构性调整,竞争日益激烈

传统纯业务开发岗位(如仅完成增删改查业务的后端工程师)的需求,特别是入门级岗位,正显著萎缩。随着企业技术需求升级,市场对Java人才的要求已从通用技能转向了更深入的领域经验(如云原生、微服务)或前沿的AI集成能力。这也导致岗位竞争加剧,在一、二线城市,求职者不仅面临技术内卷,还需应对学历与项目经验的高门槛。

大模型为核心的AI领域正展现出前所未有的就业热度与人才红利

2025年,AI相关新发岗位数量同比激增543%,单月增幅最高超过11倍,大模型算法工程师位居热门岗位前列。行业顶尖人才的供需严重失衡,议价能力极强,跳槽薪资涨幅可达30%-50%。值得注意的是,市场并非单纯青睐算法研究员,而是急需能将大模型能力落地于复杂业务系统的工程人才。这使得具备企业级架构思维和复杂系统整合经验的Java工程师,在向“Java+大模型”复合人才转型时拥有独特优势,成为企业竞相争夺的对象,其薪资天花板也远高于传统Java岗位。

说真的,这两年看着身边一个个搞Java、C++、前端、数据、架构的开始卷大模型,挺唏嘘的。大家最开始都是写接口、搞Spring Boot、连数据库、配Redis,稳稳当当过日子。

结果GPT、DeepSeek火了之后,整条线上的人都开始有点慌了,大家都在想:“我是不是要学大模型,不然这饭碗还能保多久?”

先给出最直接的答案:一定要把现有的技术和大模型结合起来,而不是抛弃你们现有技术!掌握AI能力的Java工程师比纯Java岗要吃香的多。

即使现在裁员、降薪、团队解散的比比皆是……但后续的趋势一定是AI应用落地!大模型方向才是实现职业升级、提升薪资待遇的绝佳机遇!

如何学习AGI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

2025最新版CSDN大礼包:《AGI大模型学习资源包》免费分享**

一、2025最新大模型学习路线

一个明确的学习路线可以帮助新人了解从哪里开始,按照什么顺序学习,以及需要掌握哪些知识点。大模型领域涉及的知识点非常广泛,没有明确的学习路线可能会导致新人感到迷茫,不知道应该专注于哪些内容。

我们把学习路线分成L1到L4四个阶段,一步步带你从入门到进阶,从理论到实战。

L1级别:AI大模型时代的华丽登场

L1阶段:我们会去了解大模型的基础知识,以及大模型在各个行业的应用和分析;学习理解大模型的核心原理,关键技术,以及大模型应用场景;通过理论原理结合多个项目实战,从提示工程基础到提示工程进阶,掌握Prompt提示工程。

L2级别:AI大模型RAG应用开发工程

L2阶段是我们的AI大模型RAG应用开发工程,我们会去学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。

L3级别:大模型Agent应用架构进阶实践

L3阶段:大模型Agent应用架构进阶实现,我们会去学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造我们自己的Agent智能体;同时还可以学习到包括Coze、Dify在内的可视化工具的使用。

L4级别:大模型微调与私有化部署

L4阶段:大模型的微调和私有化部署,我们会更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调;并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。

整个大模型学习路线L1主要是对大模型的理论基础、生态以及提示词他的一个学习掌握;而L3 L4更多的是通过项目实战来掌握大模型的应用开发,针对以上大模型的学习路线我们也整理了对应的学习视频教程,和配套的学习资料。

二、大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础(书籍含电子版PDF)

三、大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

四、大模型项目实战

学以致用,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

五、大模型面试题

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

2025最新版CSDN大礼包:《AGI大模型学习资源包》免费分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1169164.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于VUE的轻琢线条塑形管理系统[VUE]-计算机毕业设计源码+LW文档

摘要&#xff1a;随着健身行业的发展&#xff0c;高效的管理系统对于塑形机构至关重要。本文介绍基于VUE的轻琢线条塑形管理系统&#xff0c;阐述其采用的关键技术&#xff0c;分析系统需求&#xff0c;包括用户管理、教练信息管理等功能需求&#xff0c;详细描述系统设计中的架…

电子手轮控制步进电机程序探索

电子手轮控制步进电机程序手轮控制步进电机的頻率&#xff0c;脉冲数&#xff0c;内容包括欧姆龙plc程序&#xff0c;mcgs程序。 内容不复杂&#xff0c;用别的plc也可以实现。在自动化控制领域&#xff0c;通过电子手轮精准控制步进电机的频率与脉冲数是一项常见且关键的任务。…

2026年1月哪些房产中介管理系统客户管理功能完善

在房产经纪行业数字化转型加速的2026年&#xff0c;客户资源已成为中介企业核心竞争力的关键。一套客户管理功能完善的房产中介管理系统&#xff0c;不仅能帮助经纪人精准把握客户需求、提升跟进效率&#xff0c;更能助力企业实现客户资源的规范化沉淀与高效转化。不少中介从业…

基于VUE的企业员工工资管理系统[VUE]-计算机毕业设计源码+LW文档

摘要&#xff1a;企业员工工资管理是企业管理中的关键环节&#xff0c;传统管理方式效率低且易出错。本文介绍基于VUE的企业员工工资管理系统&#xff0c;阐述其采用的技术&#xff0c;深入分析系统在员工信息管理、工资计算、统计等方面的需求&#xff0c;详细描述系统设计过程…

基于 MATLAB 的机械故障诊断技术

1.基于 MATLAB 的机械故障诊断技术案例教程&#xff08;包含 第1章 认识MATLAB 1.1 MATLAB简介 1.1.1 MATLAB概述 1.1.2 MATLAB的功能特点 1.2 MATLAB的用户界面 1.3 MATLAB矩阵运算 1.3.1 MATLAB中的变量 1.3.2 基本矩阵的操作 1.3.3 稀疏矩阵 1.3.4 矩阵的运算 1.4 MATLAB的编…

风速发电预测(线性回归模型 、XGBoost模型 、决策树回归模型 、随机森林回归模型 、梯度提升回归模型与LSTM模型对比,多特征输入,单标签输出,可轻易替换为其它时序数据集)

1.前言 1.1.运行效果&#xff1a;风速发电预测&#xff08;线性回归模型 、XGBoost模型 、决策树回归模型 、随机森林回归模型 、梯度提升回归模型与LSTM模型对比&#xff0c;多特征输入&#xff0c;单标签输出&#xff0c;可轻易替换_哔哩哔哩_bilibili 1.2.环境库&#xff…

【无人机控制】基于 6 维简化线性模型设计 LQR 最优控制器,实现无人机三维定点位置跟踪附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#…

【无人机路径规划】基于粒子群PSO、灰狼优化GWO、鲸鱼优化WOA的多无人机协同三维航迹规划考虑航程 高度 雷达威胁 火炮威胁 时间协同 空间避撞 航角约束 禁飞区附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#…

【深度好文】大模型智能体开发全攻略:64张图解析14项关键技术,小白也能轻松掌握

基于大语言模型&#xff08;LLM&#xff09;的 AI 智能体正在变得越来越普遍&#xff0c;似乎正在取代我们 熟悉的“常规”对话式 LLM。这些令人惊叹的能力并非轻易就能实现&#xff0c;需要许多组件协同工作。在这篇文章中&#xff0c;我们将通过64张图&#xff0c;探索 AI 智…

【收藏必备】2026年AI核心关键词:智能体(Agent)六大工作流设计模式,助你构建会思考的系统

2026年AI最大关键字无疑是&#xff1a;智能体&#xff08;Agent&#xff09;。 从医疗领域的「全病程智能诊疗助手」&#xff0c;到工业场景的「产线动态调度 Agent」&#xff1b;从政务大厅的「多业务协同办理终端」&#xff0c;到消费端的「跨平台智能客服中枢」&#xff0c;…

收藏必看:AI、机器学习和深度学习:从零开始理解大模型的基础概念与联系

现在AI&#xff0c;大模型等各种时髦新潮词汇层出不穷&#xff0c;说起来都是与人工智能相关的&#xff0c;那人工智能&#xff0c;机器学习&#xff0c;深度学习到底具体是什么&#xff1f;它们之间有什么联系与区别&#xff1f;1.基本概念 1.1人工智能&#xff08;artificial…

数字员工是什么?熊猫智汇在现代企业中的应用价值有哪些?

数字员工在现代企业中扮演着愈发重要的角色&#xff0c;尤其是在优化业务流程、降低运营成本和提升效率方面。通过AI销冠系统的应用&#xff0c;企业可以实现系统化的流程自动化&#xff0c;从而显著减少人工操作带来的时间和成本消耗。这种智能化转变不仅提高了任务完成的准确…

程序员必备:大模型算力概念速成,收藏这篇就够了

你是否曾被“FLOPS”、“显存”、“Token”这些围绕大模型的神秘术语搞得晕头转向&#xff1f;就像想学烹饪却被“焯水”、“炝锅”、“勾芡”劝退一样&#xff0c;面对大模型的算力世界&#xff0c;零基础的你也许正站在门口踌躇。 别担心&#xff01;这篇“零基础学大模型&am…

【图像检测】基于粒子群算法优化SVM实现病灶图片训练与测试分类,gabor小波纹理特征提取附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#…

企业级安康旅游网站管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】

摘要 随着旅游业的快速发展&#xff0c;安康地区凭借其独特的自然景观和丰富的文化资源吸引了大量游客。然而&#xff0c;传统的旅游管理模式难以满足现代游客的个性化需求&#xff0c;尤其是在信息查询、行程规划和服务反馈等方面存在效率低下、数据分散等问题。为了提高旅游管…

Java计算机毕设之基于vue野生濒危物种公益救助交流平台基于SpringBoot濒危物种公益救助交流平台(完整前后端代码+说明文档+LW,调试定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

Java Web 学生宿舍信息系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

摘要 随着高校信息化建设的不断推进&#xff0c;学生宿舍管理作为校园生活的重要组成部分&#xff0c;亟需通过数字化手段提升管理效率和服务质量。传统宿舍管理多依赖人工操作&#xff0c;存在信息更新滞后、数据统计繁琐、安全隐患排查困难等问题。学生宿舍信息系统通过整合住…

【TextSorter Pro】我基于 Flutter × HarmonyOS 6开发了一款跨平台文本排序工具

【TextSorter Pro】我基于 Flutter HarmonyOS 6开发了一款跨平台文本排序工具 前言 在日常工作和学习中&#xff0c;我们经常需要对大量文本数据进行排序&#xff0c;比如整理名单、处理日志或分析数据。手动操作既费时又容易出错。为此&#xff0c;我基于 Flutter Harmony…

大模型实战:零代码搭建智能体,3分钟批量生成爆款图文,小白必备收藏

最近小红薯上的这种内容特别火&#xff1f;但是手动制作这种图文内容真的太费时间了&#xff01; 要查资料、写文案、做排版、找配图…&#xff0c;一套流程下来已经过去大半天了。今天就来教大家一个超实用的技巧——用扣子&#xff08;Coze&#xff09;工作流搭建一个智能体&…

Java Web 中小企业设备管理系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

摘要 随着信息技术的快速发展&#xff0c;中小企业在设备管理方面面临着诸多挑战&#xff0c;传统的手工记录和纸质档案管理方式效率低下&#xff0c;难以满足现代化企业的需求。设备管理系统的数字化和智能化已成为提升企业管理效率的重要手段。中小企业亟需一套高效、稳定且易…