问题:声明复数类,成员变量包括实部和虚部,成员方法包括实现由字符串构造复数、复数加法、减法、字符串描述、比较相等等操作。

声明复数类如下

public class Complex {

public double real,imag; //实部,虚部

public Complex(double real, double imag) //构造方法

public Complex(double real) //构造方法重载

public Complex() //构造方法

public Complex(String s) //构造方法,由字符串构造复制对象

public Complex(Complex c) //拷贝构造方法,复制对象

public String toString() //对象的字符串描述,

public double getModel() //返回复数对象的模

public void add(Complex c) //两个对象相加,改变当前对象

public static Complex add(Complex c1, Complex c2) //返回两个对象相加后的对象,重载

public void subtract(Complex c) //两个对象相减,改变当前对象

public static Complex subtract(Complex c1, Complex c2) //返回两个对象相减后的对象,重载

public boolean equals(Object obj) //比较两个对象是否相等

}

代码实现:

import java.util.*;

class ComplexNumber{

int really,virtual;

public ComplexNumber(int a,int b){

this.set(a,b);

}

public ComplexNumber(){

}

public ComplexNumber(String str){

this.set(str);

}

public void set(String str){

if(str.length()==0){

return ;

}

boolean isVirtualNegat=false;

boolean isReallyNegat=false;

int[] a=new int[2];

int k=0;

for(int i=0;i

if(str.charAt(i)=='i'){

break;

}

if(str.charAt(i)=='+'||str.charAt(i)=='-'){

if(i!=0){

k++;

}

if(str.charAt(i)=='-'){

if(i==0){

isReallyNegat=true;

}else{

isVirtualNegat=true;

}

}

continue;

}

a[k]=a[k]*10+str.charAt(i)-'0';

}

if(isVirtualNegat){

a[1]*=-1;

}

if(isReallyNegat){

a[0]*=-1;

}

this.set(a[0],a[1]);

}

public void set(int a,int b){

this.really=a;

this.virtual=b;

}

public boolean equals(ComplexNumber x){

if(x.really==this.really&&x.virtual==this.virtual){

return true ;

}

return false;

}

public ComplexNumber add(ComplexNumber x){

ComplexNumber sum=new ComplexNumber();

sum.really=this.really+x.really;

sum.virtual=this.virtual+x.virtual;

return sum;

}

public ComplexNumber minus(ComplexNumber x){

ComplexNumber sum=new ComplexNumber();

sum.really=this.really-x.really;

sum.virtual=this.virtual-x.virtual;

return sum;

}

public int compleTo(ComplexNumber x){

if(this.really>x.really){

return 1;

}else if(this.really==x.really){

if(this.virtual>x.virtual){

return 1;

}else if(this.virtual==x.virtual){

return 0;

}else{

return -1;

}

}else{

return -1;

}

}

public String toString(){

if(this.virtual<0){

if(this.really==0){

return this.virtual+"i";

}

return this.really+"-"+-1*this.virtual+"i";

}else if(this.virtual==0){

return this.really+"";

}else{

if(this.really==0){

return this.virtual+"i";

}

return this.really+"+"+this.virtual+"i";

}

}

}

class Main{

public static void main(String[] args){

Scanner sc=new Scanner(System.in);

System.out.println("Please input two number`s really part and virtual part:");

int reall1=sc.nextInt(),virtual1=sc.nextInt();

int reall2=sc.nextInt(),virtual2=sc.nextInt();

ComplexNumber a=new ComplexNumber(reall1,virtual1);

ComplexNumber b=new ComplexNumber(reall2,virtual2);

//System.out.println(a+" "+b);

System.out.println("("+a+")"+" + ("+b+") = ("+a.add(b)+")");

System.out.println("("+a+")"+" - ("+b+") = ("+a.minus(b)+")");

if(a.compleTo(b)==0){

System.out.println(a+" = "+b);

}else if(a.compleTo(b)==1){

System.out.println(a+" > "+b);

}else{

System.out.println(a+" < "+b);

}

System.out.println("-------------------");

System.out.println("Please input two complex-number : ");

String x=sc.next();

String y=sc.next();

ComplexNumber c=new ComplexNumber(x);

ComplexNumber d=new ComplexNumber(y);

System.out.println("("+c+")"+" + ("+d+") = ("+c.add(d)+")");

System.out.println("("+c+")"+" - ("+d+") = ("+c.minus(d)+")");

if(c.compleTo(d)==0){

System.out.println(c+" = "+d);

}else if(c.compleTo(d)==1){

System.out.println(c+" > "+d);

}else{

System.out.println(c+" < "+d);

}

}

}

原文:http://blog.csdn.net/u011479875/article/details/45438771

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐