手把手教你使用 Java AWT 创建一个简易计算器,2024年最新如何在面试中通过工厂模式来给自己加分

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

目录

    • 🧿 关于AWT
  • 🎶 逻辑部分

    • 🏀 1.对于数字按钮
  • ✨ 2.对于算术按钮

  • 🍖 3.对于等号按钮

  • 🎥 4.对于清除按钮

  • 🏆 5.对于退格按钮

  • ⏰ 6.特殊插件功能

  • 🍺 GIF演示

  • 💌 附完整代码:

  • 😊 结尾想说的

在本 Java 教程中,这个计算器有一些简单的功能,比如所有基本的数学运算和一些特殊的附加功能,我们将在后面看到

那么让我们开始

🧿 关于AWT


AWT (抽象窗口工具包)是一个有助于构建 GUI 的 API (图形用户界面)基于 java 应用程序。GUI使用一些图形帮助用户交互。它主要由一组的类和方法所必需的,如在一个简化的方式创建和管理的GUI按钮,窗口,框架,文本框,单选按钮 等等

我所提供的Java代码对于动作监听器接口用于事件处理的计算器。

在这里插入图片描述

🎶 逻辑部分

==================================================================

🏀 1.对于数字按钮


if(e.getSource()==b1){ //b1 代表数字 1

zt=l1.getText();

z=zt+“1”;// 1 将合并在前一个值的末尾

l1.setText(z);

}

当按下任何数字按钮时,标签 l1 中的任何值都将存储在变量 zt 中,然后与相应的数字连接,然后显示在标签 l1 中,对于 NEGATIVE 和 DECIMAL PTS 按钮,我们也做了类似的处理

✨ 2.对于算术按钮


if(e.getSource()==badd){ //对应加法

num1=Double.parseDouble(l1.getText());

z=“”;

l1.setText(z);

check=1;

}

现在,我们将标签 l1 的值转换为 double 类型后,将其存储到变量 num1 中,这在技术上将是第一个数字,然后将标签 l1 设置为 null

我们将只使用一个检查变量来获取这个特定的气动按钮(这里是 +)被点击,这样我们就可以在我们的 = 按钮中执行这个操作

🍖 3.对于等号按钮


if(e.getSource()==bcalc){

num2=Double.parseDouble(l1.getText());

if(check==1)

xd =num1+num2;

if(check==2)

xd =num1-num2;

if(check==3)

xd =num1*num2;

if(check==4)

xd =num1/num2;

if(check==5)

xd =num1%num2;

l1.setText(String.valueOf(xd));

}

现在再次将值存储 l1到 num2变量中,这将是算术上的第二个数字,然后检查变量的值,check然后进行相应的操作,然后在标签中显示结果 l1

🎥 4.对于清除按钮


if(e.getSource()==bclr){

num1=0;

num2=0;

check=0;

xd=0;

z=“”;

l1.setText(z);

}

此处将我们使用的所有变量更新为其默认值 0

并将标签 l1 设置为 null,以便我们之后可以开始新的计算

🏆 5.对于退格按钮


if(e.getSource()==bback){

zt=l1.getText();

try{

z=zt.substring(0, zt.length()-1);

}catch(StringIndexOutOfBoundsException f){return;}

l1.setText(z);

}

这里只是l1通过使用substring函数删除最后一位数字来更新值

并处理了一个 StringIndexOutOfBoundsException 当我们在标签中的值为 null 并且仍然按下返回按钮时发生的异常

⏰ 6.特殊插件功能


我所做的只是处理了 EQUAL 和所有 ARITHMETIC Buttons 中的一个异常,并根据情况打印了所需的消息

算术按钮:

try{

num1=Double.parseDouble(l1.getText());

}catch(NumberFormatException f){

l1.setText(“Invalid Format”);

return;

}

等于按钮:

try{

num2=Double.parseDouble(l1.getText());

}catch(Exception f){

l1.setText("ENTER NUMBER FIRST ");

return;

}

当我们将值转换为双精度值时,但可以说,标签 l1 具有空值(即标签为空)并且我们仍然按下这些按钮,然后它将生成 NumberFormatException execption,所以处理并打印所需的消息。

例如:

如果我点击1然后+然后我点击-而不是其他一些数字按钮,因此这是一个无效的格式,并且当-当时被点击时标签为空因此生成了execption所以只是处理它并在标签中打印无效格式

类似地,当标签为空时,并且在这种情况下单击 = ENTER NUMBER FIRST 将显示在标签内

至此,我们结束了本次 Java AWT 教程。

🍺 GIF演示


在这里插入图片描述

💌 附完整代码:


import java.awt.*;

import java.awt.event.*;

class MyCalc extends WindowAdapter implements ActionListener{

Frame f;

Label l1;

Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b0;

Button badd,bsub,bmult,bdiv,bmod,bcalc,bclr,bpts,bneg,bback;

double xd;

double num1,num2,check;

MyCalc(){

f= new Frame(“MY CALCULATOR”);

// 实例化组件

l1=new Label();

l1.setBackground(Color.LIGHT_GRAY);

l1.setBounds(50,50,260,60);

b1=new Button(“1”);

b1.setBounds(50,340,50,50);

b2=new Button(“2”);

b2.setBounds(120,340,50,50);

b3=new Button(“3”);

b3.setBounds(190,340,50,50);

b4=new Button(“4”);

b4.setBounds(50,270,50,50);

b5=new Button(“5”);

b5.setBounds(120,270,50,50);

b6=new Button(“6”);

b6.setBounds(190,270,50,50);

b7=new Button(“7”);

b7.setBounds(50,200,50,50);

b8=new Button(“8”);

b8.setBounds(120,200,50,50);

b9=new Button(“9”);

b9.setBounds(190,200,50,50);

b0=new Button(“0”);

b0.setBounds(120,410,50,50);

bneg=new Button(“+/-”);

bneg.setBounds(50,410,50,50);

bpts=new Button(“.”);

bpts.setBounds(190,410,50,50);

bback=new Button(“back”);

bback.setBounds(120,130,50,50);

badd=new Button(“+”);

badd.setBounds(260,340,50,50);

bsub=new Button(“-”);

bsub.setBounds(260,270,50,50);

bmult=new Button(“*”);

bmult.setBounds(260,200,50,50);

bdiv=new Button(“/”);

bdiv.setBounds(260,130,50,50);

bmod=new Button(“%”);

bmod.setBounds(190,130,50,50);

bcalc=new Button(“=”);

bcalc.setBounds(245,410,65,50);

bclr=new Button(“CE”);

bclr.setBounds(50,130,65,50);

b1.addActionListener(this);

b2.addActionListener(this);

b3.addActionListener(this);

b4.addActionListener(this);

b5.addActionListener(this);

b6.addActionListener(this);

b7.addActionListener(this);

b8.addActionListener(this);

b9.addActionListener(this);

b0.addActionListener(this);

bpts.addActionListener(this);

bneg.addActionListener(this);

bback.addActionListener(this);

badd.addActionListener(this);

bsub.addActionListener(this);

bmult.addActionListener(this);

bdiv.addActionListener(this);

bmod.addActionListener(this);

bcalc.addActionListener(this);

bclr.addActionListener(this);

f.addWindowListener(this);

//添加到框架

f.add(l1);

f.add(b1); f.add(b2); f.add(b3); f.add(b4); f.add(b5);f.add(b6); f.add(b7); f.add(b8);f.add(b9);f.add(b0);

f.add(badd); f.add(bsub); f.add(bmod); f.add(bmult); f.add(bdiv); f.add(bmod);f.add(bcalc);

f.add(bclr); f.add(bpts);f.add(bneg); f.add(bback);

f.setSize(360,500);

f.setLayout(null);

f.setVisible(true);

}

//关闭窗口

public void windowClosing(WindowEvent e) {

f.dispose();

惊喜

最后还准备了一套上面资料对应的面试题(有答案哦)和面试时的高频面试算法题(如果面试准备时间不够,那么集中把这些算法题做完即可,命中率高达85%+)

image.png

image.png

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

,500);

f.setLayout(null);

f.setVisible(true);

}

//关闭窗口

public void windowClosing(WindowEvent e) {

f.dispose();

惊喜

最后还准备了一套上面资料对应的面试题(有答案哦)和面试时的高频面试算法题(如果面试准备时间不够,那么集中把这些算法题做完即可,命中率高达85%+)

[外链图片转存中…(img-or1s9LdY-1713708372897)]

[外链图片转存中…(img-nT3kBQXH-1713708372898)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-PQJP55XB-1713708372898)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 24
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值