复数计算器

您所在的位置:网站首页 复数计算器在线 复数计算器

复数计算器

#复数计算器| 来源: 网络整理| 查看: 265

一实现一个复数计算器

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

例如:输入操作数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,int end);截取s中从begin开始至end结束时的字符串,并将其赋值给s;

split讲解:

java.lang.string.splitsplit 方法将一个字符串分割为子字符串,然后将结果作为字符串数组返回。stringObj.split([separator,[limit]])参数stringObj必选项。要被分解的 String 对象或文字。该对象不会被 split 方法修改。separator可选项。字符串或 正则表达式 对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽略该选项,返回包含整个字符串的单一元素数组。limit可选项。该值用来限制返回数组中的元素个数。

说明split 方法的结果是一个字符串数组,在 stingObj 中每个出现 separator 的位置都要进行分解

。separator 不作为任何数组元素的部分返回。

split 的实现直接调用的 matcher 类的 split 的方法。“ . ”在正则表达式中有特殊的含义,因此我们使用的时候必须进行转义。

三详细设计

publicclasssmallComputerextendsJFrame{

privateJLabeljl1=newJLabel("输入x:");

privateJTextFieldjtf1=newJTextField(6);

privateJLabeljl2=newJLabel("输入y:");

privateJTextFieldjtf2=newJTextField(6);

privateJLabeljl3=newJLabel("结果");

privatestaticJButtonjb1=newJButton("+");

privateJButtonjb2=newJButton("-");

privateJButtonjb3

=newJButton("*");

privateJButtonjb4=newJButton("/");

privatedoublerealPart;

privatedoubleunrealPart;

//构造方法

publicsmallComputer(doublerealPart,doubleunrealPart){

this.realPart= realPart;

this.unrealPart= unrealPart;

}

//toString()方法

publicString toString(){

if(unrealPart> 0)

returnrealPart+"+"+unrealPart+"i";

elseif(unrealPart

unrealPart= -unrealPart;

}

returnrealPart+"-"+unrealPart+"i";

}

//虚数的加法

publicvoidadd(ComplexNumber a){

}

publicsmallComputer (){

setTitle("复数计算器");

setSize(300, 300);

setLocationRelativeTo(null);//使窗口dialog显示到屏幕中央

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setVisible(true);

this.setLayout(newGridLayout(4,1));

JPanel jp1=newJPanel();

jp1.setBackground(Color.YELLOW);

jp1.add(jl1);

jp1.add(jtf1);

this.add(jp1);

JPanel jp2=newJPanel();

jp2.setBackground(Color.PINK);

jp2.add(jl2);

jp2.add(jtf2);

this.add(jp2);

JPanel jp3=newJPanel();

jp3.setBackground(Color.WHITE);

jp3.add(jl3);

this.add(jp3);

JPanel jp4=newJPanel();

jp4.setBackground(Color.CYAN);

jp4.add(jb1);

jp4.add(jb2);

jp4.add(jb3);

jp4.add(jb4);

this.add(jp4);

jb1.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvent arg0) {

ComplexNumberx =newComplexNumber(jtf1.getText().trim());

ComplexNumber y=newComplexNumber(jtf2.getText().trim());

ComplexNumber z = ComplexNumber.he(x, y);

jl3.setText(z +"");+

}

});

jb2.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvent arg0) {

ComplexNumber x =newComplexNumber(jtf1.getText().trim());

ComplexNumber y=newComplexNumber(jtf2.getText().trim());

ComplexNumber z = ComplexNumber.cha(x, y);

jl3.setText(z +"");

}

});

jb3.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvent arg0) {

ComplexNumber x =newComplexNumber(jtf1.getText().trim());

ComplexNumber y=newComplexNumber(jtf2.getText().trim());

ComplexNumber z = ComplexNumber.cheng(x, y);

jl3.setText(z +"");

}

});

jb4.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvent arg0) {

ComplexNumber x =newComplexNumber(jtf1.getText().trim());

ComplexNumber y=newComplexNumber(jtf2.getText().trim());

ComplexNumber z = ComplexNumber.chu(x, y);

jl3.setText(z +"");

}

});

}

publicstaticvoidmain(String[] args) {

ComplexNumber a =newComplexNumber();

System.out.println(a);

smallComputerf=newsmallComputer();

}

}

package计算器2;

//创建ComplexNumber类

publicclassComplexNumber{

publicdoublereal;

publicdoubleimaginary;

publicComplexNumber(){

}

publicComplexNumber(String str){

intx ;Stringy;

String real =null, unreal =null;

if(str.contains("i"))

{

x = str.indexOf("i");

intx1 = str.substring(0, x).indexOf("+");

inty1 = str.substring(0, x).indexOf("-");

intx2=str.substring(x, str.length()).indexOf("+");

inty2=str.substring(x, str.length()).indexOf("-");

if(!str.substring(0, x).contains("+")&&!str.substring(0, x).contains("-")){

unreal = str.substring(0, x);

real = str.substring(x+1, str.length());

}

if(str.substring(0, x).contains("+")&&!str.substring(0, x).contains("-")){

unreal = str.substring(x1, x);

real = str.substring(0, x1);

}

if(str.substring(0, x).contains("+")&&str.substring(0, x).contains("-")){

unreal = str.substring(x1, x);

real = str.substring(0, x1);

}

if(!str.substring(0, x).contains("+") && str.substring(0, x).contains("-")){

unreal = str.substring(y1,x);

if(str.substring(x, str.length()).contains("+"))

real = str.substring(x2+1, str.length());

else if(str.substring(x, str.length()).contains("-"))

real = str.substring(y2, str.length());

else

real=str.substring(0,y1);

}

this.real= Double.parseDouble(real);

this.imaginary= Double.parseDouble(unreal);

}

}

publicComplexNumber(doublea,doubleb){

real=a;

imaginary=b;

}

publicdoublegetReal(){

returnreal;

}

publicdoublegetImaginary(){

returnimaginary;

}

publicvoidsetReal(doublemReal){

real=mReal;

}

publicvoidsetImaginary(intmImaginary){

imaginary=mImaginary;

}

publicstaticComplexNumber he(ComplexNumber X,ComplexNumber Y){

ComplexNumber Complex=newComplexNumber();

Complex.real=X.real+Y.real;

Complex.imaginary=X.imaginary+Y.imaginary;

returnComplex;

}

publicstaticComplexNumber cha(ComplexNumber X,ComplexNumber Y){

ComplexNumber Complex=newComplexNumber();

Complex.real=X.real-Y.real;

Complex.imaginary=X.imaginary-Y.imaginary;

returnComplex;

}

publicstaticComplexNumber cheng(ComplexNumber X,ComplexNumber Y){

ComplexNumber Complex=newComplexNumber();

Complex.real=X.real*Y.real-X.imaginary*Y.imaginary;

Complex.imaginary=X.imaginary+Y.imaginary;

returnComplex;

}

publicstaticComplexNumber chu(ComplexNumber X,ComplexNumber Y){

ComplexNumber Complex=newComplexNumber();

Complex.real=(X.real*Y.real+X.imaginary*Y.imaginary)/(Y.real*Y.real+Y.imaginary*Y.imaginary);

Complex.imaginary=(-X.real*Y.imaginary+X.imaginary*Y.real)/(Y.real*Y.real+Y.imaginary*Y.imaginary);

returnComplex;

}

publicString toString(){

return("("+real+(imaginary



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3