📄 complex.java
字号:
package project;
import java.util.StringTokenizer;
public class Complex {
private double real;
private double imag;
private static final String delimiters = " (),\t";
public Complex() {
}
public Complex(double r) {
real = r;
}
public Complex(Complex c) {
real = c.real;
imag = c.imag;
}
public Complex(double r, double i) {
real = r;
imag = i;
}
public Complex(String c) throws ComplexException{
if (c == null || c.length() == 0) {
real = imag = 0.0;
return;
}
StringTokenizer t = new StringTokenizer(c, delimiters);
String[] data = new String[t.countTokens()];
for (int i = 0; i < data.length; i++) {
data[i] = t.nextToken();
}
switch (data.length) {
case 1:
double tmp;
tmp = Double.parseDouble(data[0]);
String str = c.split(",")[0];
if (str.indexOf(data[0]) >= 0) {
real = tmp;
} else {
imag = tmp;
}
break;
case 2:
real = Double.parseDouble(data[0]);
imag = Double.parseDouble(data[1]);
break;
default:
throw new ComplexException();
}
}
public double getReal() {
return real;
}
public double getModule()
{
return Math.sqrt(Math.pow(real,2)+Math.pow(imag, 2));
}
public double getImag() {
return imag;
}
public void setReal(double r) {
real = r;
}
public void setImag(double i) {
imag = i;
}
public String toString() {
return new String("(" + real + "," + imag + ")");
}
public Complex add(Complex c) {
real += c.real;
imag += c.imag;
return this;
}
public Complex minus(Complex c) {
real -= c.real;
imag -= c.imag;
return this;
}
public Complex multiply(Complex c) {
double tmp = real;
real = real * c.real - imag * c.imag;
imag = tmp * c.imag + imag * c.real;
return this;
}
public Complex divide(Complex c) {
this.multiply(new Complex(c.real, -c.imag));
double tmp = c.real * c.real + c.imag * c.imag;
real /= tmp;
imag /= tmp;
return this;
}
public static Complex add(Complex c1, Complex c2) {
return new Complex(c1.real + c2.real, c1.imag + c2.imag);
}
public static Complex minus(Complex c1, Complex c2) {
return new Complex(c1.real - c2.real, c1.imag - c2.imag);
}
public static Complex multiply(Complex c1, Complex c2) {
double real = c1.real * c2.real - c1.imag * c2.imag;
double imag = c1.real * c2.imag + c1.imag * c2.real;
return new Complex(real, imag);
}
public static Complex divide(Complex c1, Complex c2) {
Complex c = new Complex(c2.real, -c2.imag);
double tmp = c2.real * c2.real + c2.imag * c2.imag;
c.multiply(c1);
c.real /= tmp;
c.imag /= tmp;
return c;
}
}
class ComplexException extends Exception {
/**
*
*/
private static final long serialVersionUID = 1L;
public ComplexException(Exception e) {
super(e);
}
public ComplexException() {
super();
}
public String toString() {
return "ComplexException: Maybe init string's form uncorrect.";
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -