java实现加减乘除代码 用java实现加减乘除

java加减乘除计算器界面编程?来源:Code Wizards HQ
智能观 编译
孩子想学编码的话java实现加减乘除代码 , 有很多方法可以展开学习 。可以让他们学着构建视频游戏、创建动画、开发移动应用程序和搭建网站 。不管孩子喜欢哪种形式,都有大量的编码书供他们快速学起来!
但是 , 怎么才能找到一本好的儿童编码书呢?
没经验的孩子的编码书,应该涵盖基本内容 。
翻翻适合初学者的书,看看里面是否有加减乘除基本数学运算,仔细看看带变量、if / then语句、循环和函数的章节 。你不需要理解这些概念是怎么工作的,只要看看书的标题里有没有提这些,如果没有,这本书不适合新手 。
许多好的儿童编码书只用一种语言 。
好的儿童编码书只侧重一种语言,可以是Scratch、Javascript或Python 。如果你不知道孩子应该学哪种语言,可以买两三种不同语言的书 。
好的儿童编码书有很多照片和插图 。
对于那些第一次接触代码的孩子来说 , 视觉吸引力很重要 。好的儿童编码书每一页上都有丰富多彩的插图,充分吸引孩子的关注 。
好的儿童编码书提供有用的、可转移的知识 。
学一门特定的语言并不像理解基本的编码概念那么重要 。写代码的人可以从任何语言开始学起,然后轻松地转入其他语言 。有些语言不太适合孩子,如C和C,很多成年人都学不好 。
因此,根据以上几项挑选原则,java实现加减乘除代码我们推出一份教孩子编码的书籍,涵盖块编程、编程基础语言、Web开发、移动开发、游戏编程、机器人和物联网等几大类,并标出适合孩子学习的年龄段 , 可以说是史上最全的儿童编码书籍汇总了!如果你正在苦恼怎么给孩子选书,快收下这份开学礼物吧~
块编程类
学龄前的儿童也可以学习用块编程语言编码 。块语言是高度图形化的,易于学习 。Scratch是为孩子们设计的一种流行的块语言 。
1. Coding with Scratch Workbook
(用Scratch编码)
作者:DK出版公司
适合年龄: 6-9岁
在短短40页的篇幅里,读者就能学会用Scratch做任何事 , 从解决简单的数学问题到构建、分享游戏 。每章都包含指导孩子们完成简单编码项目的分步说明 。
2. Learn to Program with Scratch:A Visual Introduction to Programming with Games, Art, Science, and Math
(学会用Scratch编程:游戏、艺术、科学和数学编程的可视化介绍)
作者:Majed Marji
适合年龄: 10岁及以上
这本将近300页的书涵盖了初学者需要了解的关于Scratch语言的所有内容 。读完这本书后,孩子们将会牢固掌握Scratch和适用于任何语言的编程思想 。
3. Scratch for Kids For Dummies
(儿童Scratch傻瓜书)
作者:Derek Breen
适合年龄: 10-14岁
读者将在构建16个项目中,学习变量、if / then语句、循环和基本编程逻辑 。
4. The Official ScratchJr Book: Help Your Kids Learn to Code
(中文版:动手玩转ScratchJr编程)
作者:Marina Umaschi Bers 、Mitchel Resnick
适合年龄: 5-9岁
对于那些还太小不能学习Scratch的孩子来说,Scratchr Jr是一种更简单的块编程语言 。
5. MicroWorlds EX Books for Kids
(儿童MicroWorlds EX工具书)
作者:Steve Robson
适合年龄: 5-9岁
借助MicroWorlds EX工具,孩子们通过图形和文本来学习 。他们没有被一种纯图形语言和“固定”代码所束缚,也不必100 %处理文本 。
链接:
6. Coding for Kids For Dummies
(儿童编码傻瓜书)
作者:Camille McCue
适合年龄: 10-14岁
书中指导孩子完成15个项目,包括绘画、动画和游戏,还带领孩子们完成了创建计算机程序的过程,从构思到构建、测试 。
编程基础
尽管C、Java和Python等语言之间存在着巨大的差异,但理解编码基础知识,孩子可以相对轻松地从一种语言迁移到另一种语言 。
Python
7. Python for Kids
(适合孩子的Python学习)
作者:Jason R. Briggs
适合年龄: 10岁以上
这本书对孩子来说既全面又容易理解 。内容适合小学生,但也适合许多成人学习者看 。
链接:
8. Coding Projects in Python
(Python编码项目)
作者:DK出版公司
适合年龄: 9-12岁
不管孩子已经学了Scratch之类的块语言,还是没有做过任何编程,都可以在这本书里找到需要的一切来构建软件 。书后面的词汇和参考部分对孩子来说很有帮助 。
链接:
9. Python in Easy Steps
(学习Python的简单步骤)
作者:Mike McGrath
适合年龄:中学及以上
本书不是专门为孩子写的,但它内容组织得很好,中学生,尤其是有一些Scratch或其他语言经验的中学生,可以很容易地理解它 。读完本书,学生可以用Python构建简单的网页和编写桌面应用程序 。
10. Hello World! Computer Programming for Kids and Other Beginners
(中文版:父与子的编程之旅:与小卡特一起学Python)
作者:Warren Sande
适合年龄: 12岁以上
学习编码时,大家编写的第一个程序就是在屏幕上显示“Hello World” 。本书沿袭了这一传统 , 并为新手提供构建任何类型有用软件所需的必要技能 。
链接:
Java
Java是一种非常流行的语言,用于所有操作系统和Android设备 。这也是高中计算机科学课程中最常见的语言 。
11. Java Programming for Kids: Learn Java Step by Step and Build Your Own Interactive Calculator for Fun!
(面向儿童的Java编程:逐步学习Java,并构建自己的交互式计算器)
作者:R. Chandler Thompson
适合年龄: 13-17岁
这本书既有趣又简单 。青少年读者可以通过Java编程语言 , 构建交互式计算器应用程序 。
12. Java for Kids (and grown ups): Learn to Code and Create Your Own Projects with Java 8
(面向儿童和成年人的Java:学习用Java 8编写代码并创建自己的项目)
作者:Nadia Ameziane Garcia
适合年龄: 10-12岁
这本书只介绍学习过程中每一步所需要的东西 。每一章都建立在前文介绍的基础上,孩子们可以在短时间内学会Java的基础知识 。
C
这不是最容易学的语言,但精通C的人会更了解计算机是如何工作的 。
13. CProgamming In Easy Steps
(C编程的简单步骤)
作者:Mike McGrath
适合年龄:中学及以上
作者通过一系列简单的课程介绍了C,并提供大量专家提示,以帮助读者获得最佳编程实践 。这本书让孩子们短时间内学会C基础知识,并可能沿用很多年 。
14. Cfor Kids
(适合儿童的C语言)
作者:Blaise Vanden-Heuvel、John C Vanden-Heuvel Sr.
适合年龄: 7-9岁
这本简短多彩的书向孩子们展示了C编程是如何工作的 。示例程序各色各样,这样孩子们就能理解程序的各个部分实际上是做什么的 。
Web开发类
HTML和CSS
网页用HTML构建 , 用CSS设计风格 。这些不是真正的编程语言,但它们让孩子接触文本编辑器、构思想法,对日后探索Javascript或Python之类的语言很有用 。
15. Build Your Own Website, a Comic Guide to HTML, CSS and WordPress
(建立你自己的网站,HTML、CSS和WordPress的漫画指南)
作者:Nate Cooper、Kim Gee
适合年龄:中学及以上
在这本漫画风格的网站搭建指南中,孩子们学习HTML标记语言,熟悉控制网页样式的CSS语言,了解内容管理系统WordPress 。
链接:
16. CoderDojo Nano: Building a Website: Create with Code
(用代码搭建网站)
作者:Clyde Hatter、CoderDojo
适合年龄: 8-12岁
这本书只有96页,引导孩子们完成建立网站的整个过程 。孩子可以建立一个和书中例子完全一样的网站,也可以试着建自己喜欢的网站 。
17. Creating a Website: Design and Build Your First Site
(创建网站:设计和建立你的第一个网站)
作者:Greg Rickaby
适合年龄: 7-11岁
这本书为孩子设计网页提供指南,从规划网站的结构到添加使网站与众不同的细节 。同时提供了软件工程师在现实世界中使用的许多技巧和操作过程 。
JavaScript
许多程序员认为JavaScript是互联网的未来,学习这种语言可以建立互动性强的、有用的网站 。
18. Computer Coding with Javascript
(使用Javascript进行计算机编码)
作者:DK出版公司
适合年龄: 8-12岁
从HTML、CSS转到JavaScript可能容易晕,因为JavaScript更加复杂、强大 。但这本书内容比较简单,孩子们可以顺利过渡 。
19. Javascript for Kids: A Playful Introduction to Programming
(面向儿童的JavaScript:有趣的编程入门)
作者:Nick Morgan
适合年龄: 10岁以上
本书从数组、变量类型讨论到游戏编程 。无论孩子想制作游戏、制作动画还是使用虚拟现实,JavaScript都能让他们把想法变成真实的程序 。
链接:
20. Javascript for Kids For Dummies
(面向儿童的JavaScript傻瓜书)
作者:Chris Minnick、Eva Holland
适合年龄: 10-13岁
如果你有兴趣读编程书,帮孩子学习编码,试试这本 。这本书远远超出基本内容,方便读者构建任何能想到的Web项目 。
链接:
21. Get Coding! Learn HTML, CSS, JavascriptBuild a Website, AppGame
(编码!学习HTML,CSS,Javascript ;建立一个网站 , 应用程序和游戏)
作者:Young Rewired State
适合年龄: 9-12岁
这本书中的课程是以任务形式呈现的 , 教导孩子构建网站、应用程序和游戏 。他们还会了解不同类型的编程语言以及每种语言的优点 。
移动开发
安卓应用
App Inventor是一个完全在线开发的Android编程环境 , 具有类似Scratch的块编程界面 。它简化了移动开发过程,是向孩子们介绍Android编程的理想方式 。
22. Building a Mobile App
(构建移动应用程序)
作者:Guthals
适合年龄: 7-11岁
读这本书的孩子不仅学习编码,还学习规划、开发自己的定制应用 。本书提供了专业人员使用的应用程序开发的内容,包括原型制作和创建应用程序框架 , 对热爱移动开发的孩子来说特别有价值 。
23. Hello App Inventor
(你好 , App Inventor)
作者:Paula Beer、Carl Simmons
适合年龄: 9岁以上
使用App Inventor构建的应用可以利用许多智能手机功能,如运动传感器、GPS和相机 。本书通过30个示例项目向读者展示了如何利用这些功能 。
链接:
iOS应用
为了构建苹果产品应用程序,开发人员使用了一种叫Swift的语言 。创建这种语言时,软件工程师想让没经验的人容易学习 。对于从未编程的孩子来说,这是一个很好的选择 。
24. Coding iPhone Apps for Kids
(适合孩子的iPhone应用程序编码)
作者:Gloria Winquist、Matt McCarthy
适合年龄: 10岁以上
本书介绍了Swift语言和编码基础,并让孩子们构建两个真正的应用程序:一个生日跟踪器和一个滑板游戏 。
25. Hello Swift
(你好,Swift)
作者: Tanmay Bakshi、Lynn Beighley
适合年龄: 9岁以上
Tanmay Bakshi可以说是我们的老朋友了 , 智能观从去年开始就报道他的故事 。他4岁编码,9岁就发布第一个应用程序 。通过他的书,读者也会构建能在iOS应用商店上发布的应用程序 。
如果还有人对他不了解 , 可以看看我们往期的报道 。附传送门:
13岁天才少年在IBM掀起一场人工智能风暴
IBM少年工程师说:人工智能的下一个前沿是心理健康
游戏编程
Scratch游戏编程
26. Coding Games in Scratch
(用Scratch编码游戏)
作者:Jon Woodcock
适合年龄: 8-12岁
这本书让孩子在浏览器中制作自己的游戏 。
27. Code Your Own Games: 20 Games to Create with Scratch
(编码自己的游戏: 用Scratch创建20个游戏)
作者: Max Wainewright
适合年龄: 6-11岁
这本书分5个层次递进 , 20个游戏项目让孩子们熟悉编码和游戏开发的原理 。每款游戏都锻炼了孩子们的能力,比如控制玩家互动、在屏幕上设置对象动画、添加声音 。
28. Star Wars Coding Projects
(星球大战编码项目)
作者:Jon Woodcock、Kiki Prottsman
适合年龄: 8-12岁
喜欢《星球大战》的孩子可以通过C3PO、R2D2和其他角色学习编码 。读者不需要任何编程经验就可以看这本书 。
Python游戏编程
29. Mission Python
(Python任务)
作者:Sean McManus
适合年龄: 10岁以上
虽然对于10岁的孩子来说,这本书有点简单了,但它探索了Python游戏编程的深度 。书从Python Essentials插件开始,逐渐深入更高级的概念,如音频文件处理和3D图形 。
30. Invent Your Own Computer Games with Python
(中文版:Python编程快速上手——让繁琐工作自动化)
作者:Al Sweigart
适合年龄: 10岁以上
这本书通过对Hangman和Tic-Tac-Toe等几款流行游戏进行详细解释来教授编程 。
链接:
我的世界
31. Learn to Program with Minecraft
(用我的世界学项目)
作者:Craig Richardson
适合年龄: 10岁以上
《我的世界》是一款受欢迎的3D游戏,孩子们可以在虚拟世界中探索、建造城堡等 。本书介绍了如何使用Python编程扩展《我的世界》 。
链接:
32. Minecraft Modding for Kids For Dummies
(用我的世界教孩子建模的傻瓜书)
作者:Guthals、Stephen Foster、 Lindsey Handley
适合年龄: 10-13岁
通过9个JavaScript项目 , 孩子们从《我的世界》里的“玩家”化身为 “建模师” 。读者要有玩《我的世界》的经验,但不需要以前学过编码 。
机器人和物联网
Arduino
Arduino是一台微型计算机 , 可以用传感器、LED灯和马达等小硬件控制各种电路 。学习Arduino不仅仅意味着学习编码;它包括设计和建造真实世界的项目 。
33. Adventures in Arduino
(Arduino历险记)
作者:Becky Stewart
适合年龄: 11-15岁
喜欢机械和工程的孩子会喜欢本书中的项目 。孩子们了解Arduino,然后上手一些简单的项目 , 比如让LED灯亮起来 。
链接:
34. Sylvia’s Super-Awesome Project Book: Super-Simple Arduino
(Sylvia的超棒项目书:超级简单的Arduino)
作者:Sylvia "Super-Awesome" Todd
适合年龄: 8-12岁
Sylvia介绍了如何建立Arduino项目来控制灯光和制作音乐等 。这些项目不是复制代码,罗列事物,而是对事物如何工作以及为什么工作进行了详细解释 。
树莓派
你可以把树莓派(Raspberry Pi)当成Arduino的升级版 。两台计算机的尺寸差不多,但是树莓派的操作系统更接近笔记本电脑 。
35. Raspberry Pi Projects Workbook
(树莓派项目工作簿)
作者:DK出版公司
适合年龄: 7-12岁
孩子们可要通过这本书制作游戏,制作音乐 , 制作动画,学习Scratch、Python和Raspberry Pi 。
链接:
36. Adventures in Raspberry Pi
(树莓派历险记)
作者:Carrie Anne Philbin
适合年龄: 11-15岁
本书介绍的9个项目让孩子们快速上手树莓派,涵盖的概念编程有基础、游戏编程、图形创建等 。
链接:
乐高机器人
乐高生产了几个套件,包括机器人滚动、旋转甚至攀爬的所有必要部件 。他们也有自己的语言 , 孩子们用这些语言来创作 。
37. The Art of Lego Mindstorms EV3 Programming
(乐高头脑风暴EV3编程的艺术)
作者:Terry Griffin
适合年龄: 10岁以上
本书教孩子们在EV3头脑风暴编程环境中,控制自己的机器人 。他们学习如何建造乐高机器人并用代码控制它 。
38. Building Robots with Lego Mindstorms
(用乐高头脑风暴套件制造机器人)
作者: Mario Ferrari、Giulio Ferrari、Ralph Hempel
适合年龄: 10岁以上
在本书中,孩子们使用电子电路和传感器 , 以及乐高头脑风暴套件,学习制造机器人 。书中有大量关于齿轮、马达、气动和其他工程概念的信息,对于严肃的机器人爱好者来说很重要 。
适合学龄前儿童的编码书
为低龄儿童设计的编码书,帮助儿童建立对计算机程序的模式、颜色和其他基本要素的认知 。
39. Baby Loves Coding
(宝贝喜欢编码)
作者:Ruth Spiro
适合年龄:学前及以上
因为是给很小的孩子看的 , 书中没有提供任何明确的编码指导 。它介绍了解决问题的方法 , 以及优秀程序员需要有的想法 。
40. Learn to code: Robot Train’s Surprise Birthday Party (Volume 1)
(学会编码:机器人火车的惊喜生日聚会I)
作者:by Jen Chiou
适合年龄:学前及以上
孩子在本书中了解编码的先决条件,如决策和逻辑 。通过触摸书上像按钮的图片,孩子们帮助一辆虚构的机器人火车向生日派对运送用品,从而了解编码逻辑是如何工作的 。
41. HTML for Babies
(适合婴儿的超文本标记语言)
作者:Sterling Children's
适合年龄: 3-5岁
HTML是一种简单的标记语言 , 不需要复杂的逻辑,3-5岁的孩子可以通过本书,学会识别与网络编程相关的符号和颜色 。
42. JavaScript for Babies
(适合婴儿的JavaScript语言)
作者:Sterling Children's
适合年龄: 3-5岁
这本书让孩子们了解JavaScript的一些基本结构和数据类型 。
有趣的青少年编码书
让青少年读一本编程类的书可能很困难,所以以下书籍通过游戏开发和其他有趣的项目,帮助青少年学习 。
43. Computer Programming for Teens
(适合青少年的电脑编程)
作者:Mary E. Farrell
适合年龄:青少年
没有编码经验的孩子和那些不知道学什么语言的孩子,是本书的目标受众 。书中有一些C、Python和Web编程语言的例子,孩子们将会找到最适合自己的编码项目 。
44. Game Programming for Teens
(适合青少年的游戏编程)
作者:Maneesh Sethi
适合年龄:青少年
本书介绍了一种名为BlitzMax的游戏专用语言,它使孩子们能在所有平台( Windows、Mac、Linux )构建游戏 。
链接:
适合女孩的编码书,STEM入门
女孩可以通过编程提前接触STEM 。构建应用程序、开发游戏、编程机器人——这些活动为女孩们进入STEM领域奠定了坚实的基础 。
45. Women Who Launched the Computer Age
(开创计算机时代的女性)
作者:Laurie Calkhoven
适合年龄: 6-8岁
本书讲述了6位在二战期间为美国军方从事秘密项目的天才女性 。
46. Grace Hopper: Queen of Computer Code
(格雷斯·霍普:计算机代码女王)
作者:Laurie Wallmark
适合年龄: 5岁以上
格雷斯·霍普是一位有创造力的计算机科学家和数学家 , 也是一位授勋的海军军官和总统自由勋章获得者 。孩子们会在她精彩的生活和成就中找到鼓励 。
47. Girls Who Code: Learn to Code and Change the World
(学会编码并改变世界)
作者:Reshma Saujani
适合年龄: 10岁以上
Reshma Saujani是女孩编码组织“Girls Who Code”的创始人,她在本书中介绍了电脑和编码 , 以及在科技领域工作的女性的轶事 。
培养儿童编码兴趣的通用读物
编码的孩子受益于问题解决、数学和决策能力 。一些优秀的儿童计算机科学通用读物侧重于培养孩子对编码的兴趣 。
48. Lauren Ipsum: A Story About Computer Science and Other Improbable Things
(劳伦·益普森:关于计算机科学和其他不可思议的故事)
作者:Carlos Bueno
适合年龄: 10岁以上
一个年轻的女孩需要找到回家的路,但要做到这一点,必须解决一个个难题……读者不知不觉中,接触到了编程逻辑、解决问题的技巧和其他计算机科学思想 。
49. Once Upon an Algorithm
(从前有个算法)
作者:Martin Erwig
适合年龄:中学及以上
算法是解决问题的一组指令或过程 。你可能觉得孩子们不太想看这个 。但作者Martin Erwig通过类比、童话和电影引用,使算法变得有趣 。
原文链接:
—完—
扩展阅读:
适合孩子学习编码的7款工具套件
干货|| 如何在线学习编码?看看这 11个优秀的编程资源网站
教孩子编码就够了吗?不!学校该培养的是计算思维
每个人都应该学习编码吗?吴恩达这样回答……
如果学生编程能力胜于老师,编码课该怎么教?
亲爱的朋友:
经常有读者咨询,有没有适合孩子的编码书推荐?
我们之前推荐过一些,但苦于无中文版,很多读者找不到购买方式 。
今天的推荐,内容比较全面,我们可爱的小编找遍了资源,将能找到电子版都找到,一并送给你 。
其余没有资源的,网上也可以买到 。
如果本文对你有帮助,别忘了转发给你身边的朋友,让它帮助更多人 。
祝安!
PS:为了方便与读者探讨,特意注册了一个专用号 。如果你也是我们的铁杆读者,想探讨交流,可以加微信:znglmym 。
智能观 灵米
2018-9-12 于北京中关村
想知道AI加教育领域有哪些最新研究成果?
想要AI领域更多的干货?
想了解更多专家的“智能观”?
请前往:www.智能观.com 。
想交流沟通 , 请加负责人微信:znglmym
声明:
编译文章旨在帮助读者了解行业新思想、新观点及新动态,为原作者观点,不代表智能观观点 。
转载智能观原创文章 , 请联系
智能观小艾(微信号:zng2017618)!
关于我们
我们关注AI 教育 。致力于提供高附加值的知识,以帮助每一位老师和我们的读者不断学习并提高技能 。
我们努力让发表的每一篇文章都具有最佳质量,以满足读者的需求 。
求简单java写计算器代码加减乘除import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Calculator extends JFrame implements ActionListener
{
private boolean dotExist, operated, equaled; // 帮助运算的布尔变量
private double storedNumber; // 目前的结果
private char lastOperator; // 表示上一运算符
private JTextField operation; // 结果栏
private JButton dot, plus, minus, multi, div, sqrt, equal, changePN, clear; // 运算符
private JButton[] numbers; // 数字
// 构造者
public Calculator()
{
setTitle("Calculator");
// 初始化变量
dotExist = false; // 表示当前的数是否有小数点
operated = false; // 表示任意运算符是否被按下
equaled = false; // 表示等号是否被按下
storedNumber = 0;
lastOperator = '?';
// 初始化窗口变量
operation = new JTextField("0");
operation.setEditable(false);
numbers = new JButton[10];
for (int i = 0; i10; i)
numbers[i] = new JButton(""i);
dot = new JButton(".");
plus = new JButton(" ");
minus = new JButton("-");
multi = new JButton("*");
div = new JButton("/");
sqrt = new JButton("√");
equal = new JButton("=");
changePN = new JButton("±");
clear = new JButton("AC");
// 将窗口物体放入窗口
GridBagLayout layout = new GridBagLayout();
getContentPane().setLayout(layout);
addComponent(layout, operation, 0, 0, 4, 1);
addComponent(layout, numbers[1], 1, 0, 1, 1);
addComponent(layout, numbers[2], 1, 1, 1, 1);
addComponent(layout, numbers[3], 1, 2, 1, 1);
addComponent(layout, numbers[4], 2, 0, 1, 1);
addComponent(layout, numbers[5], 2, 1, 1, 1);
addComponent(layout, numbers[6], 2, 2, 1, 1);
addComponent(layout, numbers[7], 3, 0, 1, 1);
addComponent(layout, numbers[8], 3, 1, 1, 1);
addComponent(layout, numbers[9], 3, 2, 1, 1);
addComponent(layout, dot, 4, 0, 1, 1);
addComponent(layout, numbers[0], 4, 1, 1, 1);
addComponent(layout, sqrt, 4, 2, 1, 1);
addComponent(layout, plus, 1, 3, 1, 1);
addComponent(layout, minus, 2, 3, 1, 1);
addComponent(layout, multi, 3, 3, 1, 1);
addComponent(layout, div, 4, 3, 1, 1);
addComponent(layout, equal, 5, 0, 2, 1);
addComponent(layout, changePN, 5, 2, 1, 1);
addComponent(layout, clear, 5, 3, 1, 1);
}
// 对按钮进行反应的方法
public void actionPerformed(ActionEvent e)
{
JButton btn = (JButton)e.getSource();
if (btn == clear)
{
operation.setText("0");
dotExist = false;
storedNumber = 0;
lastOperator = '?';
}
else if (btn == equal)
{
operate('=');
equaled = true;
}
else if (btn == plus)
{
operate(' ');
equaled = false;
}
else if (btn == minus)
{
operate('-');
equaled = false;
}
else if (btn == multi)
{
operate('*');
equaled = false;
}
else if (btn == div)
{
operate('/');
equaled = false;
}
else if (btn == changePN)
{
operate('p');
operate('=');
equaled = true;
}
else if (btn == sqrt)
{
operate('s');
operate('=');
equaled = true;
}
else
{
if (equaled)
storedNumber = 0;
for (int i = 0; i10; i)
if (btn == numbers[i])
{
if (operation.getText().equals("0"))
operation.setText(""i);
else if(! operated)
operation.setText(operation.getText()i);
else
{
operation.setText(""i);
operated = false;
}
}
if (btn == dot! dotExist)
{
operation.setText(operation.getText()".");
dotExist = true;
}
}
}
// 进行运算的方法
private void operate(char operator)
{
double currentNumber = Double.valueOf(operation.getText()).doubleValue();
if (lastOperator == '?')
storedNumber = currentNumber;
else if (lastOperator == ' ')
storedNumber= currentNumber;
else if (lastOperator == '-')
storedNumber -= currentNumber;
else if (lastOperator == '*')
storedNumber *= currentNumber;
else if (lastOperator == '/')
storedNumber /= currentNumber;
else if (lastOperator == 'p')
storedNumber *= -1;
else if (lastOperator == 's')
storedNumber = Math.sqrt(currentNumber);
else if (lastOperator == '='equaled)
storedNumber = currentNumber;
operation.setText(""storedNumber);
operated = true;
lastOperator = operator;
}
// 快捷使用GridBagLayout的方法
private void addComponent(GridBagLayout layout, Component component, int row, int col, int width, int height)
{
GridBagConstraints constraints = new GridBagConstraints();
constraints.fill = GridBagConstraints.BOTH;
constraints.insets = new Insets(10, 2, 10, 2);
constraints.weightx = 100;
constraints.weighty = 100;
constraints.gridx = col;
constraints.gridy = row;
constraints.gridwidth = width;
constraints.gridheight = height;
layout.setConstraints(component, constraints);
if (component instanceof JButton)
((JButton)component).addActionListener(this);
getContentPane().add(component);
}
// 主方法初始化并显示窗口
public static void main(String[] args)
{
Calculator calc = new Calculator();
calc.setSize(290, 400);
calc.setVisible(true);
}
}
加减乘除运算(Java)实际上这相当于javascript的eval方法,以下是该方法的java实现:
//Eval.java
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
public class Eval {
public int eval(String exp){
ListString list = infixExpToPostExp(exp);//转化成后缀表达式
return doEval(list);//真正求值
}
//遇到操作符压栈,遇到表达式从后缀表达式中弹出两个数,计算出结果,压入堆栈
private int doEval(ListString list) {
StackString stack =new StackString();
String element;
int n1,n2,result;
try{
for(int i = 0; ilist.size();i){
element = list.get(i);
if(isOperator(element)){
n1 = Integer.parseInt(stack.pop());
n2 = Integer.parseInt(stack.pop());
result = doOperate(n1,n2,element);
stack.push(new Integer(result).toString());
}else{
stack.push(element);
}
}
return Integer.parseInt(stack.pop());
}catch(RuntimeException e){
throw new IllegalExpressionException(e.getMessage());
}
}
private int doOperate(int n1, int n2, String operator) {
if(operator.equals(" "))
return n1n2;
else if(operator.equals("-"))
return n1 - n2;
else if(operator.equals("*"))
return n1 * n2;
else
return n1 / n2;
}
private boolean isOperator(String str){
return str.equals(" ") || str.equals("-") || str.equals("*") || str.equals("/");
}
private ListString infixExpToPostExp(String exp){//将中缀表达式转化成为后缀表达式
ListString postExp = new ArrayListString();//存放转化的后缀表达式的链表
StringBuffer numBuffer = new StringBuffer();//用来保存一个数的
StackCharacter opStack = new StackCharacter();//操作符栈
char ch,preChar;
opStack.push('#');
try{
for(int i = 0; iexp.length();){
ch = exp.charAt(i);
switch(ch){
case ' ':
case '-':
case '*':
case '/':
preChar = opStack.peek();
//如果栈里面的操作符优先级比当前的大,则把栈中优先级大的都添加到后缀表达式列表中
while(priority(preChar) = priority(ch)){
postExp.add("" preChar);
opStack.pop();
preChar = opStack.peek();
}
opStack.push(ch);
i;
break;
case '(':
//左括号直接压栈
opStack.push(ch);
i;
break;
case ')':
//右括号则直接把栈中左括号前面的弹出,并加入后缀表达式链表中
char c = opStack.pop();
while(c != '('){
postExp.add(""c);
c = opStack.pop();
}
i;
break;
//#号,代表表达式结束 , 可以直接把操作符栈中剩余的操作符全部弹出,并加入后缀表达式链表中
case '#':
char c1;
while(!opStack.isEmpty()){
c1 = opStack.pop();
if(c1 != '#')
postExp.add(""c1);
}
i;
break;
//过滤空白符
case ' ':
case '\t':
i;
break;
//数字则凑成一个整数,加入后缀表达式链表中
default:
if(Character.isDigit(ch)){
while(Character.isDigit(ch)){
numBuffer.append(ch);
ch = exp.charAt(i);
}
postExp.add(numBuffer.toString());
numBuffer = new StringBuffer();
}else{
throw new IllegalExpressionException("illegal operator");
}
}
}
}catch(RuntimeException e){
throw new IllegalExpressionException(e.getMessage());
}
return postExp;
}
private int priority(char op){//定义优先级
switch(op){
case' ':
case'-':
return 1;
case'*':
case'/':
return 2;
case'(':
case'#':
return 0;
}
throw new IllegalExpressionException("Illegal operator");
}
}
Main.java 主函数所在类
public class Main
{
public static void main(String[] args) {
try {
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
String exp=br.readLine();
int result = eval.eval(exp);
System.out.println(result);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
IllegalExpressionException异常类
public class IllegalExpressionException extends RuntimeException{
public IllegalExpressionException(){
}
public IllegalExpressionException(String info){
super(info);
}
}
java的加减乘除运算使用BigDecimal并且一定要用String来够造 。
实现方法如下:
import java.math.BigDecimal;
/**
* 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精
* 确的浮点数运算,包括加减乘除和四舍五入 。
*/
public class Arith{
//默认除法运算精度
private static final int DEF_DIV_SCALE = 10;
//这个类不能实例化
private Arith(){
}
/**
* 提供精确的加法运算 。
* @param v1 被加数
* @param v2 加数
* @return 两个参数的和
*/
public static double add(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.add(b2).doubleValue();
}
/**
* 提供精确的减法运算 。
* @param v1 被减数
* @param v2 减数
* @return 两个参数的差
*/
public static double sub(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2).doubleValue();
}
/**
* 提供精确的乘法运算 。
* @param v1 被乘数
* @param v2 乘数
* @return 两个参数的积
*/
public static double mul(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.multiply(b2).doubleValue();
}
/**
* 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
* 小数点以后10位,以后的数字四舍五入 。
* @param v1 被除数
* @param v2 除数
* @return 两个参数的商
*/
public static double div(double v1,double v2){
return div(v1,v2,DEF_DIV_SCALE);
}
/**
* 提供(相对)精确的除法运算 。当发生除不尽的情况时 , 由scale参数指
* 定精度,以后的数字四舍五入 。
* @param v1 被除数
* @param v2 除数
* @param scale 表示表示需要精确到小数点以后几位 。
* @return 两个参数的商
*/
public static double div(double v1,double v2,int scale){
if(scale0){
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
* 提供精确的小数位四舍五入处理 。
* @param v 需要四舍五入的数字
* @param scale 小数点后保留几位
* @return 四舍五入后的结果
*/
public static double round(double v,int scale){
if(scale0){
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b = new BigDecimal(Double.toString(v));
BigDecimal one = new BigDecimal("1");
return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
};
Java实现两个无限大的数的加减乘除运算根据你的要求,我写了一下代码,如下:package com.fer2005.test;public class AddUtil { /**
* @param a1 大数字1,按数组存储
* @param a2 大数字2 , 按数组存储
* @return 返回结果数组
*/
public int[] getResult(int[] a1,int[] a2){
//取最大的长度作为返回结果的长度 , 此时未考虑是否有进位
int length=a1.lengtha2.length?a1.length:a2.length;
//新建未考虑进位的数组结果
int[] tmp_res =new int[length];
int i=0;
//循环相加得到res的按照最短数组相加的结果
while(ia1.lengthia2.length){
i;
tmp_res[length-i]=a1[a1.length-i] a2[a2.length-i];
}
//操作完成后,需将长数组的值赋给res
//a1的长度说明a1比a2长度?。?res需要获取a2的前几位
if(a1.lengtha2.length){
while(length-i0){
tmp_res[length-i-1]=a2[a2.length-i-1];
i;
}
}else if(a1.lengtha2.length){
//说明a2比a1长度?。?res需要获取a1的前几位
while(length-i0){
tmp_res[length-i-1]=a1[a1.length-i-1];
i;
}
}//考虑进位问题,如果某一元素大于10,则本身减10 , 前一元素加1,如果第一个元素大于10 , 特殊处理 。
//需处理相加之和大于10的情况
for(int k=tmp_res.length-1;k0;k--){
if(tmp_res[k]=10){
tmp_res[k-1]=tmp_res[k-1] 1;
tmp_res[k]=tmp_res[k]-10;
}
}
int[] res=new int[length 1];
//首位情况特殊处理
if(tmp_res[0]=10){
res[0]=1;
res[1]=tmp_res[0]-10;
for(int m=1;mtmp_res.length;m){
res[m 1]=tmp_res[m];
}else{res=tmp_res;}
}
return res;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
AddUtil addUtil = new AddUtil();
int[] a1= {9,2,3,8,5};
int[] a2={1,9,2,3,9};
for(int j:addUtil.getResult(a1, a2)){
System.out.print(j ",");
}
}}
【java实现加减乘除代码 用java实现加减乘除】关于java实现加减乘除代码和用java实现加减乘除的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读