【问题标题】:In java how can we pass user input to overloaded constructors?在java中,我们如何将用户输入传递给重载的构造函数?
【发布时间】: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


【解决方案1】:

你不能在控制台做很多事情。您应该要求用户选择要使用的女巫构造函数及其选择用户输入的数据类型的扫描器,例如:

        Scanner sc=new Scanner(System.in);
        int x = sc.nextInt() //will get Int
        int y = sc.nextFloat() //will get float

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 2019-01-27
    • 2021-04-28
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多