您的位置:

java需求分析,java需求量

本文目录一览:

java项目需求分析怎么写

目前, 国内外信息化建设已经进入基于Web应用为核心的阶段, Java作为应用于网络的最好语言,前景无限看好。然而,就算用Java建造一个不是很烦琐的web应用,也不是件轻松的事情。概括一下,实施Java的WEB项目需要掌握的技术如下: 

lJava语言

l面向对象分析设计思想

l设计模式和框架结构

lXML语言

l网页脚本语言

l数据库

l应用服务器

l集成开发环境

下面我们具体地看每个技术.

1、Java语言

Java语言体系比较庞大,包括多个模块。从WEB项目应用角度讲有JSP、Servlet、JDBC、JavaBean(Application)四部分技术。

(1)、Java Database Connectivity (JDBC)技术

在Java Web应用开发中,数据库管理系统(RDBMS)的使用是不可缺少的。JDBC(Java Database Connectivity) 是一种用于执行 SQL 语句的 Java API。它由一组用 Java 编程语言编写的类和接口组成。JDBC 为工具/数据库开发人员提供了一个标准的API,使他们能够用纯Java API 来编写数据库应用程序。

简单地说,JDBC 可做三件事:

l与数据库建立连接,

l发送 SQL 语句,

l处理结果。

(2)、Servlet技术

Servlet是运行在服务器端的程序,可以被认为是服务器端的applet。servlet被Web服务器(例如Tomcat)加载和执行,就如同applet被浏览器加载和执行一样。servlet从客户端(通过Web服务器)接收请求,执行某种操作,然后返回结果。

Servlet的主要优点包括

lServlet是持久的。servlet只需Web服务器加载一次,而且可以在不同请求之间保持服务(例如一次数据库连接)。

lServlet是与平台无关的。如前所述,servlet是用Java编写的,它自然也继承了Java的平台无关性。

lServlet是可扩展的。由于servlet是用Java编写的,它就具备了Java所能带来的所有优点。Java是健壮的、面向对象的编程语言,它很容易扩展以适应你的需求。servlet自然也具备了这些特征。

lServlet是安全的。从外界调用一个servlet的惟一方法就是通过Web服务器。这提供了高水平的安全性保障,尤其是在你的Web服务器有防火墙保护的时候。

lServlet可以在多种多样的客户机上使用。由于servlet是用Java编写的,所以你可以很方便地在HTML中使用它们。

(3)、JavaServer Pages(JSP) 技术

JSP是从Servlet上分离出来的一小部分,简化了开发,加强了界面设计。JSP定位在交互网页的开发。运用Java语法,但功能较Servlet弱了很多,并且高级开发中只充当用户界面部分。JSP容器收到客户端发出的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式响应给客户端。其中程序片段可以是:操作数据库、重新定向网页以及发送 E-Mail 等等,这些都是建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,与客户端的浏览器无关,因此,JSP 称为Server-Side Language。

JavaServer Pages的主要优点包括

●一次编写,各处执行(Write o­nce, Run Anywhere)特性

作为Java 平台的一部分,JavaServer Pages 技术拥有Java语言“一次编写,各处执行”的特点。随着越来越多的供货商将JavaServer Pages 技术添加到他们的产品中,您可以针对自己公司的需求,做出审慎评估后,选择符合公司成本及规模的服务器,假若未来的需求有所变更时,更换服务器平台并不影响之前所投下的成本、人力所开发的应用程序。

● 搭配可重复使用的组件

JavaServer Pages技术可依赖于重复使用跨平台的组件(如:JavaBean或Enterprise JavaBean组件)来执行更复杂的运算、数据处理。开发人员能够共享开发完成的组件,或者能够加强这些组件的功能,让更多用户或是客户团体使用。基于善加利用组件的方法,可以加快整体开发过程,也大大降低公司的开发成本和人力。

● 采用标签化页面开发

Web 网页开发人员不一定都是熟悉Java 语言的程序员。因此,JSP 技术能够将许多功能封装起来,成为一个自定义的标签,这些功能是完全根据XML 的标准来制订的,即JSP 技术中的标签库(Tag Library)。因此,Web 页面开发人员可以运用自定义好的标签来达成工作需求,而无须再写复杂的Java 语法,让Web 页面开发人员亦能快速开发出一动态内容网页。

今后,第三方开发人员和其他人员可以为常用功能建立自己的标签库,让Web 网页开发人员能够使用熟悉的开发工具,如同HTML 一样的标签语法来执行特定功能的工作。

● N-tier 企业应用架构的支持

有鉴于网际网络的发展,为因应未来服务越来越繁杂的要求,且不再受地域的限制,因此,

必须放弃以往Client-Server的Two-tier 架构,进而转向更具威力、弹性的分散性对象系统。由于JavaServer Page 技术是Java 2 Platform Enterprise Edition (J2EE)集成中的一部分,它主要是负责前端显示经过复杂运算后之结果内容,而分散性的对象系统则是主要依赖EJB ( Enterprise JavaBean )和JNDI ( Java Naming and Directory Interface )构建而成。

(4)、JavaBean(Application)应用组件技术

Application是Java应用程序,在WEB项目和一些开发中主要应用JavaBean。它就是Application的一部分,逻辑运算能力很强,能极大的发挥Java语言的优点。JavaBean 被称为是Java 组件技术的核心。JavaBean 的结构必须满足一定的命名约定。JavaBean能提供常用功能并且可以重复使用,这使得开发人员可以把某些关键功能和核心算法提取出来封装成为一个组件对象,这样就增加了代码的重用率和系统的安全性。

高级的WEB项目会应用到以上所有技术,它们之间联合使用和协作开发会提高开发的效率和系统的性能。 

2、面向对象分析设计思想

Java语言是完全面向对象的语言,所以在项目设计时会有很大的帮助,在设计时应尽量舍弃以往的面向过程的设计方式。 

在分析项目业务关系的时候,应用一些UML(Unified Modeling Language)图,例如常用的用例图(use case diagram),类图(class diagram),时序图(sequence diagram)等等,会有很大的帮助,这样能尽快找出业务逻辑主要面对的对象,然后对每个对象进行行为划分,最后再实现对象之间的集成和通信。

3、设计模式和框架结构

Java从语言角度来讲不是很难,但是从整体设计角度来讲我们还需要了解一些高级应用框架。如果要设计一个良好的框架结构,单单只掌握Java语言远远不够。这就涉及到一个设计模式,还有和设计模式相关的一些知识。 

设计模式在Java项目实施过程更是重中之重。主要在与两层的设计模式、三层的设计模式和N层的设计模式。它直接决定着项目的应用、部署和实际开发设计。 

在普通的WEB项目中很多采用两层的开发结构。JSP+Servlet或JSP+JavaBean。当对开发要求高的项目中使用很多的还是MVC的三层开发结构,也就是JSP+Servlet+JavaBean。它能分有效的分离逻辑开发,使开发人员能专注于各自的开发。同时也能时整个开发结构流程更清晰,但是需要比较高的开发配合度。 

在项目中,我们经常使用著名的Model-View-Controller(MVC)架构。MVC架构是随着smalltalk language语言的发展提出的,它是一个著名的用户界面设计架构。经典的MVC架构把一个组件(可认为是整个应用程序的一个模块)划分成三部分组 Model管理这个模块中所用到的数据和业务逻辑。而View 管理模块如何显示给用户,Controller 决定如何处理用户和该模块交互式时候产生的事件 如用户点击一个按钮等。 

4、XML语言

在服务器和设计模式结构中会应用到自定义文件,而且在应用高级设计时也会定义自用的标签,现在流行的是用XML去定义配置,所以XML语言应该有一定掌握。

当前,Java 2平台企业版(J2EE)架构在厂商市场和开发者社区中倍受推崇。作为一种工具,可扩展标记语言(XML)简化了数据交换、进程间消息交换这一类的事情,因而对开发者逐渐变得有吸引力,并开始流行起来。自然,在J2EE架构中访问或集成XML解决方案的想法也很诱人。因为这将是强大系统架构同高度灵活的数据管理方案的结合。

XML的应用似乎是无穷无尽的,但它们大致上可以分为三大类:

1、简单数据的表示和交换(针对XML的简单API(SAX)和文档对象模型(DOM)语法解析,不同的文档类型定义(DTDs)和概要(schemas))

2、用户界面相关、表示相关的上下文(可扩展样式表语言(XSL),可扩展样式表语言转换(XSLT))

3、面向消息的计算(XML-RPC(远程过程调用),基于SOAP协议的Web 服务(Web Services),电子化业务XML(ebXML))

5、网页脚本语言

为了提高WEB项目的整体性能,提高人机交互的友好界面,网页的脚本语言是很有用处的,有的时候可以解决很大的难题或提高程序的性能和应用性。 

网页脚本语言的执行都是在客户端执行的,速度很很快,并且大多的操作与服务器没有交互运算,所以在一些应用中非常理想。在设计WEB项目的应用中,网页的脚本语言起着不能忽视的作用,所以如果设计WEB项目的应用中,对JavaScript应有一定的了解。

JavaScript是一种基于对象(Object Based)和事件驱动(Event Driven)并具有安全性能(Secure)的脚本语言。使用它的目的是与HTML超文本标记语言、Java 脚本语言(Java小程序)一起实现在一个Web页面中链接多个对象,与Web客户交互作用。从而可以开发客户端的应用程序等。它是通过嵌入或调入在标准的HTML语言中实现的。它具有以下几个基本特点:

1.它是一种脚本编写语言

JavaScript是一种脚本语言,它采用小程序段的方式实现编程。像其它脚本语言一样,JavaScript同样已是一种解释性语言,它提供了一个易的开发过程。 

它的基本结构形式与C、C++、VB十分类似。但它不像这些语言一样,需要先编译,而是在程序运行过程中被逐行地解释。它与HTML标识结合在一起,从而方便用户的使用操作。

2. 基于对象的语言。

JavaScript是一种基于对象的语言,同时以可以看作一种面向对象的。这意味着它能运用自己已经创建的对象。因此,许多功能可以来自于脚本环境中对象的方法与脚本的相互作用。

3.简单性

JavaScript的简单性主要体现在:首先它是一种基于Java基本语句和控制流之上的简单而紧凑的设计, 从而对于学习Java是一种非常好的过渡。其次它的变量类型是采用弱类型,并未使用严格的数据类型。

4.安全性

JavaScript是一种安全性语言,它不允许访问本地的硬盘,并不能将数据存入到服务器上,不允许对网络文档进行修改和删除,只能通过浏览器实现信息浏览或动态交互。从而有效地防止数据的丢失。

5. 动态性

JavaScript是动态的,它可以直接对用户或客户输入做出响应,无须经过Web服务程序。它对用户的响应,是采用以事件驱动的方式进行的。所谓事件驱动,就是指在主页(Home Page)中执行了某种操作所产生的动作,就称为“事件”(Event)。比如按下鼠标、移动窗口、选择菜单等都可以视为事件。当事件发生后,可能会引起相应的事件响应。 

6、开发工具

(1)、数据库

在主要的应用中,数据库相关的环节应用很多,所以对数据库应该有一定了解。不能单单只了解一种数据库,因为在很多实际开发中会提出很多数据库解决方案,所以只有在了解多种数据库的情况下才能有一个比较方案。

对于数据库应该了解他的性能和一些基本的操作常识,还有该数据库的特点。而针对与Java语言WEB项目的数据库开发则主要是对JDBC的应用,还有数据库事务处理和连接池等高级概念的应用。

(2)、Web服务器

同数据库一样,应该了解该服务器的性能,特点和一些常识。

在应用方面,Web服务器主要是针对于配置和部署,对目录的配置,调试;对配置文件属性的修改;对访问权限和并发性的控制;Java类的部署等。

(3)、集成开发环境(IDE):

“公欲善其事, 必先利其器”. 对于Web应用开发人员来讲,好的集成开发环境(IDE:Integrated Development Enviroment)是非常重要的。目前在市场上占主导位置的一个集成开发工具就是Eclipse.

java课程分享Java需求分析师是做什么的?

对于Java的岗位,想必大家对开发工程师、测试工程师比较熟习,现在蹦出个需求分析师,那么他是做什么的呢?很多朋友都是你看着我,我看着你,然后大家彼此摇头。你知道Java需求分析师是做什么的吗?今天就跟java课程一起来好好的认识下吧,让你的未来多一个就业选择。

Java需求分析师是做什么的?Java需求分析师是项目前期与客户方打交道最多的人,对于客户来说,他可以代表整个项目组,对与项目组成员来说他的意见可以代表客户方的意见,项目组内所有与客户需求相关的事情必需得到他的认可,Java需求分析师在整个项目中占据着很重要的地位。

Java需求分析师的主要职责有什么呢?他要负责很多的事项,比如

1、负责软件产品的调研,客户需求分析,与客户沟通,确定需求边界;

2、进行《产品需求说明书》及《需求规格说明书》的编写;

3、负责系统功能及界面的原型设计,熟练使用原型设计工具;

4、参与公司移动端类产品规划,产品可行性分析;

5、负责竞争对手产品分析。

通过Java需求分析师的相关职责,我们也可以看出Java需求分析师,在项目中占据着比较重要的位置。作为一个Java程序员,如果你想要自己未来的发展空间更加的辽阔,那么成为一名Java需求分析师,也是一个相当不错的选择,月薪过万是没有问题的。

北大青鸟java培训:如何进行用户需求分类?

关于需求分析的文章相信大家都看过不少了,而且对于如何获取用户需求的方式方法也很多,最常用的就是报告了。

今天,江苏IT培训主要就来简单讲解一下,当我们获得这些用户需求之后,如何根据不同的商业目的进行需求分类整理呢?我们在进行需求分类的时候,一般有两种方式同时进行。

一、横向分类首先来说,为什么我们拿到需求后,要把需求进行分类?因为产品在不同时期,对于不同类别的需求,会有不同的权重。

我们常说,产品有起步期、发展期、稳定期。

而需求根据每个公司或者产品经理的定义,可能将需求分类为:功能类、bug修复类、体验类、运营类、数据类等。

(1)产品的起步期在产品的起步期,我们会将核心功能的需求放在权重高一些的位置,把产品的地基打好,骨架搭好,快速上线来验产品模式。

别连房子还没盖好,就在纠结地砖的颜色。

此时的产品经理一定要控制好自己完美偏执狂的内心冲动,对于增加新功能和体验上的需求要做好排序,此时开发核心功能,快速投入市场试错才是我们的目标。

(2)产品的发展期到了发展期会让产品尽快做完善,或根据市场反馈对产品方向进行一定的调整,此时bug修复类、运营类的需求就放在首位了。

产品投入市场后,可以收集各渠道的用户反馈,有没有切实解决目标用户的问题?产品的方向是不是正确的?在产品发展期,完善产品的过程中,对于需求更是要有把控力,做需求分析最后输出的结果就是做需求决策,学习乔帮主做简约主义者,决定不做什么比决定做什么更加重要,往往鸡肋需求,开发出来上线容易,但是要去掉,就没那么容易了。

(3)产品的稳定期再到了产品的稳定期,产品趋于成熟,用户数也多起来了,产品不断迭代,此时提升用户体验和数据类的需求就变得很重要了。

比如A/Btest,在用户量小的时候,得到的数据会有较大的出入,是不可取的。

在产品的稳定期,有比较大的用户量时,可以用数据来驱动产品的迭代。

java开发的项目中模块、包、类、接口的关系是什么?

一个模块中有多个包;一个包中可以有多个类;一个类(接口类)中可以有多个抽象方法;一个类(实现类,继承自接口类)中可以有多个方法。推荐选择千锋教育,千锋教育采用全程面授高品质、高体验培养模式,非常值得选择。

java项目开发具体流程:

第一、需求分析: 列出功能点、界面要求,实现原型 实用软件 :axure,确定施工周期,工期安排软件:excel或者Steelray Project Viewer。

第二、概要设计:根据原型写出大致设计,理清实现逻辑。

第三、 详细设计:做不做都行,没事做做也可以:详细列出所有功能的伪代码实现。

第四、代码实现:做网站建议用MyEclipse+mysql ,框架 SSH。

第五、测试:功能、页面效果是否实现。

第六、使用说明:写使用说明。

想要了解更多java开发的相关信息,推荐咨询千锋教育。千锋Java现已拥有成熟独立的项目库,项目均1:1引进大厂项目,授课采用 CREA 项目研发模型,即 Cooperation、Research、Exercise、Alliance,以项目促进高质量教学。多场景,多学科联动为学员的技能实战提供高度还原的真实演练场,充分赋能学员简历价值,打造企业直聘班,得到广大学员一致认可。

请问Java实现计算器的需求分析怎么写

package example;

import java.awt.*;

import java.awt.event.*;

public class Calculator extends Frame {

/**

* 本实例实现功能如下 1.普通加减乘除运算 2.小数点的情况已经解决 3.开始按0已经解决 4.消去键可以起作用

*

*/

private static final long serialVersionUID = 1L;

private String name[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",

".", "=", "+", "-", "*", "/", "Backspace", "", "", "C" };

private Button button[] = new Button[name.length];

private TextField textfield = new TextField("0.");

// 设置2个字符A1,A2用于存放点击运算符号之前的String数据

private String A1 = null, A2 = null;

// 设置2个字符B1,B2用于存放点击运算符号之后的String数据

private String B1 = null, B2 = null;

// 存放运算符号前后的数据,douuble类型进行运算

private double A, B;

// s存放为哪种运算符号,Result存放最后的运行结果

private String Result="0", s;

// 判断这个数字是否为小数,小数的时为true不是时为false

private boolean Decimal=false;

// 构造器,显示在标题栏

public Calculator() {

super("TEST:Caculator");

}

// 计算器的基本布局,在一个BorderLayout上面放置了一个GridLayout一个BorderLayout

public void init() {

setLayout(new BorderLayout(2, 2));

// 设置2个Panel

Panel p0 = new Panel();

Panel p1 = new Panel();

// p0上添加所有按扭

p0.setLayout(new GridLayout(5, 4, 1, 1));

// 不同的按扭采用不同的监听事件0-9和"."采用ButtonListener()

for (int i = 0; i 11; i++) {

button = new Button(name);

// 设置字体颜色为蓝色

button.setForeground(Color.blue);

p0.add(button);

button.addActionListener(new ButtonListener());

}

// 其余的运算符号采取ButtonListener2()另一监听事件

for (int i = 11; i name.length; i++) {

button = new Button(name);

// 设置字体颜色为红色

button.setForeground(Color.RED);

p0.add(button);

button.addActionListener(new ButtonListener2());

}

// 设置中间2个按扭不可见,增加美观,对称

button[17].setVisible(false);

button[18].setVisible(false);

// p1上添加文本输出区域

p1.setLayout(new BorderLayout(5, 5));

p1.add(textfield);

// 不可以向文本框里随便写东西

textfield.setEditable(false);

// 设置文本框背景为白色

textfield.setBackground(Color.WHITE);

add(p0, BorderLayout.SOUTH);

add(p1, BorderLayout.NORTH);

pack();

// 设置打开窗口在显示器的中间显示

setLocationRelativeTo(null);

// 关闭按扭,适配器模式

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

// 调整可见

setVisible(true);

}

public class ButtonListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

System.out.print(e.getActionCommand() + " ");

// 当A2和B2同时为null时候表示程序第一次运行或者开始一次新的运行,即按"="之后,将按键获取的值赋给A2--setp1

if (A2 == null B2 == null) {

// 所按的数字按扭不是"0"的时候对A2进行赋值,否则给A2值不变,但是让textfield恢复初始值"0."

if (!"0".equals(e.getActionCommand())) {

// 考虑第一次按小数点的情况,按小数点后将boolean类型的Decimal定义为true

if (".".equals(e.getActionCommand())) {

A2 = "0.";

Decimal = true;

textfield.setText(A2);

} else {

A2 = e.getActionCommand();

textfield.setText(A2);

}

} else {

if ("0".equals(e.getActionCommand())) {

} else {

A2 = e.getActionCommand();

textfield.setText("0");

}

}

// 当A2不等于null,B2和A为null,表示还没有按运算符号,仍然对A2进行赋值

} else if (A2 != null A1 == null B2 == null) {

// 已经是小数的在点小数点不做任何动作,不是小数的在按"."的时候追加赋值并且设置Decimal为true

if (".".equals(e.getActionCommand())) {

if (Decimal) {

} else {

Decimal = true;

A2 += e.getActionCommand();

textfield.setText(A2);

}

} else {

A2 += e.getActionCommand();

textfield.setText(A2);

}

// 当A,A2不等于null,B2为null,表示刚按过运算符号,开始对B2进行赋值

// 仍要考虑"0"的情况,但要考虑0做为被减数,乘数和加数,此处B2可以等于0

// B2也可以是小数将Decimal设置回false

} else if (A2 != null A1 != null B2 == null) {

Decimal = false;

if (!"0".equals(e.getActionCommand())) {

// 不为"0"但为"."的情况,原理同上

if (".".equals(e.getActionCommand())) {

Decimal = true;

if (Decimal) {

B2 = "0.";

} else {

Decimal = true;

B2 = e.getActionCommand();

textfield.setText(B2);

}

} else {

B2 = e.getActionCommand();

textfield.setText(B2);

}

} else {

B2 = "0";

textfield.setText(B2);

}

// 当A,A2,B2都不为null的时候表示B2已经被赋值,继续按数字按扭对B2继续赋值

// 当B2等于0的时候不进行追加直接赋值,仅当B2不等于0的时候才进行追加

} else if (A2 != null A1 != null B2 != null) {

if ("0".equals(B2)) {

// 考虑用户连续2次按"0"的情况

if ("0".equals(e.getActionCommand())) {

B2 = "0";

textfield.setText(B2);

} else {

B2 = e.getActionCommand();

textfield.setText(B2);

}

} else {

// 不为"0"但为"."的情况,原理同上

if (".".equals(e.getActionCommand())) {

if (Decimal) {

} else {

Decimal = true;

B2 += e.getActionCommand();

textfield.setText(B2);

}

} else {

B2 += e.getActionCommand();

textfield.setText(B2);

}

}

}

}

}

public class ButtonListener2 implements ActionListener {

public void actionPerformed(ActionEvent e) {

System.out.print(e.getActionCommand() + " ");

// 一旦按了运算符号"+-*/"A2赋值给A,使得A和A2都不为null,但此时B2还为null在按数字键的时候便会给B2赋值

// 给s--运算符号赋值

if ("+".equals(e.getActionCommand())) {

if (A2 == null) {

A2 = "0";

}

A1 = A2;

s = "+";

} else if ("-".equals(e.getActionCommand())) {

if (A2 == null) {

A2 = "0";

}

A1 = A2;

s = "-";

} else if ("*".equals(e.getActionCommand())) {

if (A2 == null) {

A2 = "0";

}

A1 = A2;

s = "*";

} else if ("/".equals(e.getActionCommand())) {

if (A2 == null) {

A2 = "0";

}

A1 = A2;

s = "/";

// 等号的时候把B2赋值给B,进行最后的运算

} else if ("=".equals(e.getActionCommand())) {

if (A2 == null) {

A2 = "0";

}

if (B2 == null) {

B2 = "0";

}

A1 = A2;

B1 = B2;

// 将String类型转换为double进行运算

A = Double.parseDouble(A1);

B = Double.parseDouble(B1);

if ("+".equals(s)) {

Result = String.valueOf(A + B);

System.out.println();

System.out.println(A + "+" + B + "=" + Result);

} else if ("-".equals(s)) {

Result = String.valueOf(A - B);

System.out.println();

System.out.println(A + "-" + B + "=" + Result);

} else if ("*".equals(s)) {

Result = String.valueOf(A * B);

System.out.println();

System.out.println(A + "*" + B + "=" + Result);

}

textfield.setText(Result);

A1 = null;

A2 = null;

B1 = null;

B2 = null;

Decimal=false;

} else if ("Backspace".equals(e.getActionCommand())) {

String text = "0";

if (A2 == null A1 == null) {

} else if (A2 != null A1 == null B2 == null) {

int t = A2.length();

text = A2;

if (t == 1) {

text = "0";

} else {

text = text.substring(0, t - 1);

}

A2 = text;

} else if (A2 != null A1 != null B2 == null) {

} else {

int t = B2.length();

text = B2;

if (t == 1) {

text = "0";

} else {

text = text.substring(0, t - 1);

}

B2 = text;

}

textfield.setText(text);

System.out.println();

System.out.println("text=" + text + " ");

System.out.println(A1 + ":" + A2 + ":" + B1 + ":" + B2);

// 选择"C"的时候将计算器重置,即恢复到开始的状态

} else if ("C".equals(e.getActionCommand())) {

textfield.setText("0.");

A1 = null;

A2 = null;

B1 = null;

B2 = null;

Decimal=false;

}

}

}

public static void main(String[] args) {

Calculator calculator = new Calculator();

calculator.init();

}

} 下面还有