java 中实现复数的加减

Python013

java 中实现复数的加减,第1张

(1):具体代码(附注释)

复数类:

public class Complex {

private float shibu

private float xubu

Complex()

{this(0,0)

}

Complex(float shibu,float xubu){

this.shibu=shibu

this.xubu=xubu

}

public void Add(Complex p)

{

Complex result=new Complex()

result.shibu=this.shibu+p.shibu

result.xubu=this.xubu+p.xubu

System.out.print("加法结果为:"+result.shibu+"+"+result.xubu+"i")

}

public void Sub(Complex p)

{

Complex result=new Complex()

result.shibu=this.shibu-p.shibu

result.xubu=this.xubu-p.xubu

System.out.print("加法结果为:"+result.shibu+"+"+result.xubu+"i")

}

public void Mul(Complex p)

{

Complex result=new Complex()

result.shibu=this.shibu*p.shibu-this.xubu*p.xubu

result.xubu=this.shibu*p.xubu+p.shibu*this.xubu

System.out.print("乘法结果为:"+result.shibu+"+"+result.xubu+"i")

}

public static void main(String[] args) {

Complex fushu1=new Complex(1,2)

Complex fushu2=new Complex(3,4)

fushu1.Add(fushu2)

fushu1.Sub(fushu2)

fushu1.Mul(fushu2)

}

}

(2):提供一个例子:

源代码:

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)

break 

case 3:

System.out.println("请输入您要修改哪个实数:")

int l=0

try{

l= Integer.parseInt(in.readLine())

}

catch(IOException e)

{ System.out.println("抛掷异常")}

if(l==1)

{

h.xiugais(h)

h.xiugaix(h)

}

else

{

xiugais(j)

xiugaix(j)

}

break 

case 4:

double f=0

double e=0

f=cheng(h.sb,j.sb)+cheng(h.xb,j.xb)

e=cheng(h.sb,j.xb)+cheng(h.xb,j.sb)

k.sb=(double)(Math.round(f*100)/100.0)

k.xb=(double)(Math.round(e*100)/100.0)

System.out.println("计算结果的实部为:"+k.sb)

System.out.println("计算结果的虚部为:"+k.xb)

toString(k)

break 

case 5:

double chushu=cheng(j.sb,j.sb)-cheng(j.xb,-j.xb)

double beichushus=jian(cheng(h.sb,j.sb),cheng(h.xb,-j.xb))

double beichushux=jia(cheng(h.sb,-j.xb),cheng(h.xb,j.sb))

k.sb=chu(beichushus,chushu)

k.xb=chu(beichushux,chushu)

System.out.println("计算结果的实部为:"+k.sb)

System.out.println("计算结果的虚部为:"+k.xb)

toString(k)

break 

case 6:

System.out.println("修改后的结果为:")

System.out.println("第一个复数:"+toString(h))

System.out.println("第二个复数:"+toString(j))

break 

}

System.out.println("请问您是否还要继续 y/n:")

try{

z=(char)System.in.read()

System.in.skip(2) //忽略回车换行

}

catch(IOException e){}

} while(z=='y')

}

public static double gets(Book a){

return a.sb

}

public static double getx(Book b){

return b.xb

}

public static double xiugais(Book a)

{

BufferedReader in = new BufferedReader(new InputStreamReader(System.in))

System.out.println("请输入您要修改的实部:")

double m=0

try{

m= Double.parseDouble(in.readLine())

}

catch(IOException e)

{ System.out.println("抛掷异常")}

a.sb=m

System.out.println("修改成功:")

return 0

}

public static double xiugaix(Book b)

{

BufferedReader in = new BufferedReader(new InputStreamReader(System.in))

System.out.println("请输入您要修改的虚部:")

double n=0

try{

n= Double.parseDouble(in.readLine())

}

catch(IOException e)

{ System.out.println("抛掷异常")}

b.xb=n

System.out.println("修改成功:")

return 0

}

public static double jia(double a,double b)//

{

double c=0

c=a+b

System.out.println("加法成功:")

return c 

}

public static double jian(double a,double b)

{

double c=0

c=a-b

System.out.println("减法成功:")

return c

}

public static double cheng(double a,double b)

{

double c=0

c=a*b

System.out.println("乘法成功:")

return  c

}

public static double chu(double a,double b)

{

double d=0

double c=0

d=a/b

c=(double)(Math.round(d*100)/100.0)

System.out.println("除法成功:")

return c 

}

public  static double toString(Book a){

System.out.println("结果为:"+a.sb+"+"+a.xb+"*i")

return 0

}

}

(3)测试结果截图:

1、real和image这两个field前面的static去掉。

2、public Complex() 这个构造器去掉,如果要接受输入的话,应该放到main方法里,这样这个类更清晰。

3、静态方法Complex_add和Complex_minus没指定返回值类型,应该返回的是Complex。另外方法名字首字母应小写。

4、参考这个:http://zhidao.baidu.com/question/151336863.html

package main

public class Complex {

private int a

private int b

public Complex() {

this.a = 0

this.b = 0

}

public Complex(int a, int b) {

this.a = a

this.b = b

}

public int getA() {

return a

}

public void setA(int a) {

this.a = a

}

public int getB() {

return b

}

public void setB(int b) {

this.b = b

}

@Override

public String toString() {

return "(" + a + "+" + b + "i)"

}

}

package main

public class ComplexTest {

public static Complex add(Complex c1, Complex c2) {

return new Complex(c1.getA() + c2.getA(), c1.getB() + c2.getB())

}

public static Complex subtract(Complex c1, Complex c2) {

return new Complex(c1.getA() - c2.getA(), c1.getB() - c2.getB())

}

public static Complex multiply(Complex c1, Complex c2) {

return new Complex(c1.getA() * c2.getA() - c1.getB() * c2.getB(),

c1.getB() * c1.getA() + c1.getA() * c2.getB())

}

public static Complex division(Complex c1, Complex c2) {

int a = c1.getA()

int b = c1.getB()

int c = c2.getA()

int d = c2.getB()

return new Complex((a *c + b * d) / (c * c + d * d), (b * c - a * d) / (c * c + d * d))

}

public static void main(String []args) {

Complex c1 = new Complex(1, 2)

Complex c2 = new Complex()

System.out.println(c1)

System.out.println(c2)

System.out.println(add(c1, c2))

}

}