用户可输入任意类型的2个数,输出2数之和(类型包含整数、浮点数、复数),编写java的代码
时间: 2024-10-13 16:16:58 浏览: 33
为了处理用户输入任意类型的两个数并计算它们的和,你可以创建一个方法接受`Number`类型的参数。在Java中,我们可以利用泛型和`instanceof`关键字来实现这个功能。下面是一个简单的示例:
```java
import java.util.Scanner;
public class NumberAdder {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第一个数字:");
Number num1 = scanner.nextNumber(); // 假设nextNumber()方法能从Scanner获取Number类型
System.out.println("请输入第二个数字:");
Number num2 = scanner.nextNumber();
Number sum = addNumbers(num1, num2);
System.out.println("两数之和为: " + sum);
}
/**
* 根据给定的Number类型计算两个数的和
*/
public static <T extends Number> T addNumbers(T num1, T num2) {
if (num1 instanceof Integer && num2 instanceof Integer) {
return (T) Integer.sum(num1.doubleValue(), num2.doubleValue());
} else if (num1 instanceof Float && num2 instanceof Float) {
return (T) ((Float) num1).floatValue() + ((Float) num2).floatValue();
} else if (num1 instanceof Double || num2 instanceof Double) {
return (T) (num1 + num2);
} else if (isComplexNumber(num1) && isComplexNumber(num2)) {
// 如果都是复数,可以假设有适当的方法来相加
Complex complexSum = addComplexNumbers((Complex) num1, (Complex) num2);
return (T) complexSum;
} else {
throw new IllegalArgumentException("输入的数值类型不支持");
}
}
private static boolean isComplexNumber(Number num) {
return num instanceof Complex; // 假设有一个名为Complex的自定义类表示复数
}
// 假设Complex是一个类,有对应的方法进行复数相加
private static Complex addComplexNumbers(Complex c1, Complex c2) {
// 实现复数的相加...
}
}
// 自定义复数类 Complex.java
class Complex {
double real;
double imag;
// 构造函数、getter/setter 和复数相加方法等
}
```
在这个例子中,我们首先读取用户输入,然后通过泛型`<T extends Number>`让`addNumbers`方法能够接收任何派生自`Number`的类型。我们检查每个数的实际类型,并根据其类型计算和。
注意,这里假设存在一个`Complex`类来处理复数。如果你需要处理复数,你需要定义这样一个类并且提供相应的加法操作。
阅读全文