java设计计算器_Java复数计算器的设计

本文介绍了如何使用Java设计一个复数计算器,涵盖了事件处理、图形界面设计和字符串处理技术。通过解析输入数据获取复数的实部和虚部,实现了复数的加、减、乘、除操作。同时,讲解了Java事件处理模型,包括事件源、监听器和事件处理方法,以及常用布局管理器如FlowLayout、GridLayout等。此外,还讨论了字符串substring和split方法的使用,以及复数类的设计与运算方法的实现。
摘要由CSDN通过智能技术生成

一实现一个复数计算器

要求:能够计算复数的加、减、乘、除。

例如:输入操作数2+3i和操作数-7-6i,选择加法运算,得到结果-5-3i。

提示:(1)要分析输入数据,得到实部和虚部,并注意符号。

二采用的相关技术

1事件处理

在Java开发中,对于事件的处理非常重要,比如响应键盘的输入、鼠标的点击、窗口的移等等都要涉及到Java事件的应用。

Java事件由事件类和监听接口组成,自定义一个事件前,必须提供一个事件的监听接口以及一个事件类。JAVA中监听接口是继承java.util.EventListener的,事件类继承java.util.EventObject。很多基本的事件系统已经为我们定义好了,我们只要学会调用即可,但是为了更加灵活地满足特定的需求,我们有时候也需要自定义事件。

使用授权处理模型进行事件处理的实现原理主要有以下几步:

(1)组件作为事件源,不同类型的组件会产生特定类型的事件。

(2)要接收并处理某种类型的事件XXXEvent必须定义和注册相应的事件监听器类,通过调用组件的成员方法addXXXListener(XXXListener)方法向组件注册事件监听器。

(3)实现XXXListener的类的实例对象,可作为事件的监听器对象。

(4)事件源通过实例化事件类型激发并产生事件,事件将被传送给已注册的一个或多个监听器。

(5)事件监听器负责实现相应的事件处理方法。

2图形绘制

Java的GUI界面定义是由AWT类包和Swing类包来完成的。它在布局管理上采用了容器和布局管理分离的方案。也就是说,容器只管将其他组件放入其中,而不管这些组件是如何放置的。对于布局的管理交给专门的布局管理器类(LayoutManager)来完成。

Java已经为我们提供了几个常用的布局管理器类,例如: FlowLayout、BorderLayout、GridLayout、GridBagLayout等。下面列表说明它们的布局特点:

特点

java.awt

CardLayout

将组件象卡片一样放置在容器中,在某一时刻只有一个组件可见

java.awt

FlowLayout

将组件按从左到右而后从上到下的顺序依次排列,一行不能放完则折到下一行继续放置

java.awt

GridLayout

形似一个无框线的表格,每个单元格中放一个组件

java.awt

BorderLayout

将组件按东、南、西、北、中五个区域放置,每个方向最多只能放置一个组件

java.awt

GridBagLayout

非常灵活,可指定组件放置的具体位置及占用单元格数目

Javax.swing

BoxLayout

就像整齐放置的一行或者一列盒子,每个盒子中一个组件

Javax.swing

SpringLayout

根据一组约束条件放置子组件

Javax.swing

ScrollPaneLayout

专用于JScrollPane,含一个Viewport,一个行头、一个列头、两个滚动条和四个角组件

Javax.swing

OverlayLayout

以彼此覆盖的形式叠置组件

Javax.swing

ViewportLayout

JViewport的默认布局管理器

3字符串分割

substring讲解:

s=s.substring(int begin);截取掉s从首字母起长度为begin的字符串,将剩余字符串赋值给s;

s=s.substring(int begin,

import java.io.*; public class Book{ double sb; double xb; Book(double x,double y){ this.sb=x; this.xb=y; } Book(){ } public static void main(String args[]){ System.out.println("请输入数据:"); double a=0; double b=0; double c=0; double d=0; String s; BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.println("请输入第一个复数的实部:"); try{ s = in.readLine(); a=Double.parseDouble(s); } catch(IOException e) { System.out.println("抛掷异常");} System.out.println("请输入第一个复述的虚部:"); try{ s = in.readLine(); b =Double.parseDouble(s); } catch(IOException e) { System.out.println("抛掷异常");} System.out.println("请输入第二个复述的实部:"); try{ s = in.readLine(); c =Double.parseDouble(s); } catch(IOException e) { System.out.println("抛掷异常");} System.out.println("请输入第二个复述的虚部:"); try{ s = in.readLine(); d =Double.parseDouble(s); } catch(IOException e) { System.out.println("抛掷异常");} Book h; h=new Book(a,b); Book j; j=new Book(c,d); System.out.println("您输入的一个数为:"); toString(h); System.out.println("您输入的二个数为:"); toString(j); Book k; k=new Book(); char z='y'; do{ System.out.println("请选择您要进行的计算:"); System.out.println("1 :进行加法运算"); System.out.println("2 :进行减法运算"); System.out.println("3 :进行修改"); System.out.println("4 :进行乘法运算"); System.out.println("5 :进行除法运算"); System.out.println("6 :查看修改结果"); int i=0; try{ i= Integer.parseInt(in.readLine()); } catch(IOException e) { System.out.println("抛掷异常");} switch(i) { case 1: k.sb=jia(h.sb,j.sb); k.xb=jia(h.xb,j.xb); System.out.println("计算结果的实部为:"+k.sb); System.out.println("计算结果的虚部为:"+k.xb); toString(k); break ; case 2: k.sb=jian(h.sb,j.sb); k.xb=jian(h.xb,j.xb); System.out.println("计算结果的实部为:"+k.sb); System.out.println("计算结果的虚部为:"+k.xb); toString(k); brea
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值