public class Complex {
float real,imag;
// public Complex(String str) throws NumberFormatException
// {
//
// }
public Complex(String s) {
int i;
if (s!=null)
{
if(s.charAt(s.length()-1)'i') //有虚部
{
for(i=s.length()-2;i>=0;i--)
{
if (s.charAt(i)'+'||s.charAt(i)=='-')
break;
}
if(i>0)//既有实部又有虚部
{
real=Float.parseFloat(s.substring(0, i));
}
else//只有虚部
{
real=0;
}
if(s.charAt(i+1)=='i')
{
if(i==-1)
imag=1;
else if(s.charAt(i)=='+')
imag=1;
else
imag=-1;
}
else
{
if(i>=0)
imag=Float.parseFloat(s.substring(i, s.length()-1));
else
imag=Float.parseFloat(s.substring(0, s.length()-1));
}
}
else//无虚部
{
real=Float.parseFloat(s);
imag=0;
}
}
}
// public Complex addComplex(Complex c)
// {
//
// }
public String toString()
{
String s="";
if(real!=0)
{
s=s+real;
}
if(imag!=0)
{
if(imag-1)
s=s+'-';
else if(imag1)
s=s+'+';
else
s=s+imag;
s=s+'i';
}
return s;
}
public boolean equals(Complex c) {
return thisc||c!=null&&this.realc.real&&this.imag==c.imag;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Complex c1=new Complex("1.3-i");
Complex c2=new Complex("-i");
Complex c3=new Complex("2-3.45i");
Complex c4=new Complex("5.3456");
Complex c5=new Complex("i");
System.out.println(c1+"\n"+c2+"\n"+c3+"\n"+c4+"\n"+c5);
}
}
你可以自定义一些异常,在方法内部做一一些判断,如果满足异常条件,则抛出自定义的异常,在调用方法的外侧捕捉异常:
public class BadFomatException: Exception // 具体要继承到那个异常类,请查看类库中默认有哪些合适的吧,直接继承Exception也可以,或者使用已有的而不使用自定义的异常也可以,看具体情况而定
{
public void BadFomatException(string message):super(message){}
}
public class Complex
{
public void Complex(string complex)
{
if(this.BadFomat(complex, out string error)) // 这是自己写的判断格式的函数
{
throw BadFomatException(error); // 这里可以扩展为根据不同的错误抛出不同的异常
}
// to be continue
}
}
public static void Main(string[] args) // 只是调用的地方
{
Complex complex = null;
try{
var c = new Complex("hello");
}catch(BadFomatException ex)
{
Console.WirteLIne(“格式错误:” + ex.Messages);
Logger.error(ex.Messages);
}
catch(Exception ex)
{
Console.WirteLIne(“意外错误:” + ex.Messages);
Logger.error(ex.Messages);
}
}
以上代码仅供参考,不保证编译能通过,没有测试
好的,明白了,谢谢大神
你这漏了好多符号啊,代码写的就不对,你编译器没报错?要对异常处理,加个try catch就好了
没报错,我头一次在这上面提问,不知道为啥弄上去的代码乱七八糟的;有的地方是给注释掉了;OK,谢谢你了
@来这看大神: 因为这个编辑器默认支持markdown标记的