java利用方法重载编写一个应用程序,用户可输入任意类型的2个数,输出2数之和(类型包含整数、浮点数、复数) 全部代码
时间: 2024-10-13 13:14:40 浏览: 35
Java面向对象(基础)-方法应用
在Java中,我们可以创建一个类来实现方法重载,允许用户输入不同类型的数据并计算它们的和。这里我们假设有一个名为`NumberAdder`的类,它有若干个重载的加法方法。对于复数的支持,我们将创建一个`ComplexNumber`类。以下是完整的代码:
```java
import java.util.Scanner;
class ComplexNumber {
double real;
double imaginary;
// 构造函数
public ComplexNumber(double real, double imaginary) {
this.real = real;
this.imaginary = imaginary;
}
// 重载加法方法,处理复数相加
public ComplexNumber add(ComplexNumber other) {
return new ComplexNumber(this.real + other.real, this.imaginary + other.imaginary);
}
// 返回复数的字符串表示形式
@Override
public String toString() {
return "Complex{" +
"real=" + real +
", imaginary=" + imaginary +
'}';
}
}
class NumberAdder {
// 整数和浮点数的加法方法
public int add(int a, int b) {
return a + b;
}
public float add(float a, float b) {
return a + b;
}
// 复数的加法方法
public ComplexNumber add(ComplexNumber a, ComplexNumber b) {
return a.add(b);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入两个数字(按回车键继续)或 'c x y' 来添加复数:");
while (scanner.hasNext()) {
String input = scanner.nextLine();
if ("c".equals(input)) { // 如果是输入 'c'
System.out.println("请输入复数的实部和虚部,例如:c 1 2");
double real = scanner.nextDouble();
double imag = scanner.nextDouble();
ComplexNumber complexA = new ComplexNumber(real, imag);
System.out.print("请输入另一个复数的实部和虚部:");
real = scanner.nextDouble();
imag = scanner.nextDouble();
ComplexNumber complexB = new ComplexNumber(real, imag);
NumberAdder adder = new NumberAdder();
ComplexNumber result = adder.add(complexA, complexB);
System.out.println("两复数之和: " + result);
} else {
try {
// 尝试将输入解析为整数或浮点数
int numA = Integer.parseInt(input);
int numB = scanner.nextInt();
NumberAdder adder = new NumberAdder();
int sum = adder.add(numA, numB);
System.out.println("两数之和: " + sum);
} catch (NumberFormatException e) {
System.out.println("输入无效,请输入整数或浮点数。");
}
}
}
scanner.close();
}
}
```
在这个程序中,用户可以输入整数、浮点数或按照指示输入复数(如 `c x y`)。`main` 方法会根据输入的不同类型调用相应的加法方法。
阅读全文