用java,输入两复数相加的字符串,输出结果,如果输入错误,则通过异常处理报错
时间: 2024-05-11 14:18:21 浏览: 85
可以通过以下代码实现输入两个复数相加的字符串,并输出结果:
```java
import java.util.Scanner;
public class ComplexNumberAddition {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入第一个复数:");
String complexNumber1 = scanner.nextLine();
System.out.print("请输入第二个复数:");
String complexNumber2 = scanner.nextLine();
try {
ComplexNumber result = add(complexNumber1, complexNumber2);
System.out.println("计算结果为:" + result);
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
}
public static ComplexNumber add(String complexNumber1, String complexNumber2) {
String[] parts1 = complexNumber1.split("\\+");
String[] parts2 = complexNumber2.split("\\+");
if (parts1.length != 2 || parts2.length != 2) {
throw new IllegalArgumentException("输入格式错误,请输入格式为:a+bi");
}
double real1, imag1, real2, imag2;
try {
real1 = Double.parseDouble(parts1[0].trim());
imag1 = Double.parseDouble(parts1[1].replace("i", "").trim());
real2 = Double.parseDouble(parts2[0].trim());
imag2 = Double.parseDouble(parts2[1].replace("i", "").trim());
} catch (NumberFormatException e) {
throw new IllegalArgumentException("输入格式错误,请输入格式为:a+bi");
}
ComplexNumber number1 = new ComplexNumber(real1, imag1);
ComplexNumber number2 = new ComplexNumber(real2, imag2);
return number1.add(number2);
}
}
class ComplexNumber {
private double real;
private double imag;
public ComplexNumber(double real, double imag) {
this.real = real;
this.imag = imag;
}
public ComplexNumber add(ComplexNumber other) {
double realResult = this.real + other.real;
double imagResult = this.imag + other.imag;
return new ComplexNumber(realResult, imagResult);
}
@Override
public String toString() {
return String.format("%.1f+%.1fi", this.real, this.imag);
}
}
```
在这个程序中,我们定义了一个 `ComplexNumber` 类来表示复数,它包含实部和虚部两个属性,并且实现了 `add` 方法来实现复数的加法。同时,我们还定义了一个 `add` 方法来接收两个字符串,将它们转换为 `ComplexNumber` 对象后进行加法操作,并返回结果。
在 `add` 方法中,我们首先使用正则表达式来分割输入的字符串,判断输入是否符合 `a+bi` 的格式。如果不符合,我们就抛出一个 `IllegalArgumentException` 异常,并且在异常消息中提示用户输入格式错误。如果符合格式,我们使用 `Double.parseDouble` 方法来将字符串转换为实数和虚数,如果转换失败,也会抛出同样的异常。
在 `main` 方法中,我们使用 `Scanner` 来获取用户输入的两个复数,并且调用 `add` 方法进行加法操作。如果加法操作中出现了异常,我们就会捕获它,并且输出异常消息。否则,就输出计算结果。
阅读全文