- 实现如图复数运算功能,单击“计算”按钮,将复数1和复数2的运算(什么运算由选择的运算符确定)结果显示在结果文本框中。
要求:
(1)复数的运算通过编写一个复数(Complex)类及它的加(Add),减(Minus)和乘(Multiply)方法完成,复数的显示通过复数类的Display()方法完成
(2)通过重载构造方法实现从一个字符串复数来构造一个Complex对象,即可以这样构造一个算数:Complex c = new Complex(“3+4i”); c即为实部为3虚部为4的算数。
提示:此题主要是要大家了解界面与业务逻辑分离的原则,复数的运算由复数类完成,界面只是获得用户输入的数据,并将运算结果显示给用户。

求解答,主要卡在复数方法那一步
using System.Text.RegularExpressions;
namespace LeetCode
{
public class Complex
{
public Complex()
{ }
public Complex(string complex)
{
string real, imag;
Regex reg = new Regex(@"^([0-9]{1,})\+([0-9]{1,})i$");
Match mc = reg.Match(complex);
real = mc.Groups[1].Value;
imag = mc.Groups[2].Value;
Real = Convert.ToDouble(real);
Imag = Convert.ToDouble(imag);
}
///实部
public double Real { get; set; } = 0;
///虚部
public double Imag { get; set; } = 0;
//加法
public static Complex operator +(Complex a, Complex b)
{
return new Complex { Real = a.Real + b.Real, Imag = a.Imag + b.Imag };
}
//减法
public static Complex operator -(Complex a, Complex b)
{
return new Complex { Real = a.Real - b.Real, Imag = a.Imag - b.Imag };
}
//乘法
public static Complex operator *(Complex a, Complex b)
{
return new Complex
{
Real = a.Real * b.Real - a.Imag * b.Imag,
Imag = a.Imag * b.Real + a.Real * b.Imag
};
}
public override string ToString()
{
if (Imag > 0)
{
return Real + "+" + Imag + "i";
}
if (Imag == 0)
{
return Real.ToString();
}
if (Imag < 0)
{
return Real.ToString() + Imag.ToString() + "i";
}
return null;
}
}
}