【发布时间】:2020-08-07 16:43:31
【问题描述】:
现在我将硬编码参数传递给构造函数。我想将用户输入作为参数传递给构造函数。以下是我的代码:
public class AddTwoNumbers {
AddTwoNumbers(int num1, int num2){
int sum = num1+num2;
System.out.println("Sum = "+sum);
}
AddTwoNumbers(int num1, float num2){
float sum = num1+num2;
System.out.println("Sum = "+sum);
}
AddTwoNumbers(float num1, int num2){
float sum = num1+num2;
System.out.println("Sum = "+sum);
}
AddTwoNumbers(float num1, float num2){
float sum = num1+num2;
System.out.println("Sum = "+sum);
}
public static void main(String[] args) {
AddTwoNumbers addNumObj1 = new AddTwoNumbers(4,5);
AddTwoNumbers addNumObj2 = new AddTwoNumbers(4.5f, 5.5f);
}
}
那么我该如何接受用户输入。如果我使用 Scanner 类,那么我已经限制了用户的输入选择,也就是说,如果我要求用户输入两个整数但用户想要一个整数和另一个浮点数。这样做也没有构造函数重载的优势。 所以我正在寻找一种解决方案,我不想向用户显示多个选项以供选择,而是通过代码处理它,并希望专门使用构造函数重载。
【问题讨论】:
-
您可以为用户提供四个选项供您选择,并根据选择调用方法。只是一个建议。对于一些提示检查这个:stackoverflow.com/questions/20442044/…
-
您可以解释用户提供的输入并确定需要什么类型,例如如果输入是“2.12”,它是一个浮点数而不是一个整数。当然,如果这对你很重要,你的检测应该足够聪明,可以在不同的语言环境下工作。
-
@pallavirichhariya 我不认为这就是 OP 的意思。 @rich 构造函数重载在这里没有任何意义。你应该有方法重载。您可以在
try-catch块中的parseFloat之前使用parseInt并将它们路由到正确的方法。先自己试试,有问题再tag我。 -
为什么没有意义@Aniket,假设您有一个具有 main 的类,您从用户那里获取输入,然后还有其他类您正在执行构造函数重载。 OP 正在谈论构造函数重载而不是方法重载。我认为让 OP 确认这里需要什么,而不是假设。
-
我没有假设@pallavirichhariya,这显然是一个数学运算并打印出结果。这是一种行为,而不是一种构造。我希望这是有道理的。
标签: java user-input constructor-overloading