从用户输入创建对象 - 构造函数需要不同类型的参数

时间:2014-11-03 18:12:53

标签: java

背景:我被要求创建一个涉及多个存储不同信息的类的项目,然后是一个菜单,允许用户创建每个类的对象并从中调用各种方法每个(即'存储的所有数字的平均值等等)

我已经设置了一个菜单' class,带有允许用户输入的扫描程序,打印用户键入的关键字列表以选择选项。所以'键入' ClassA'创建ClassA'然后,我存储了所有可能关键字的数组。用户输入存储在实例变量'关键字'并检查数组的准确性。

一旦确认,我就想设置一个' if'将为每个可能的关键字调用方法的循环。例如,

private void processKeyword() {
    String keyword = getKeyword();
    if (keyword.equals("keyword1")) {
       createClass1();
    }
    if (keyword.equals("keyword2")) {
        Class1.Method1();
    }

等等我然后可以在菜单类中设置私有方法,允许我做这些事情。

问题:我遇到的问题是某些构造函数和方法需要整数和字符串类型的参数。扫描程序将所有输入存储为字符串,并直接从方法中请求参数(让我们说createClass1())阻止我从if循环中调用它。

任何人都有任何想法如何绕过这个障碍?

1 个答案:

答案 0 :(得分:1)

嗯,你不能给我们很多东西继续,所以这是一个简单的答案。

为您创建的类创建更多局部变量。然后在需要时打电话给他们。

private void processKeyword() {
   String keyword = getKeyword();
   Class1 aClass; // variable here
   if (keyword.equals("keyword1")) {
      aClass = createClass1();  // which must be assigned
   }
   if (keyword.equals("keyword2")) {
      aClass.Method1(); // call it
   }

您可能希望调用new Class1()而不是createClass1(),以便将一些参数传递给构造函数。这是下一步 - 调用具有不同参数的ctors。但首先我认为你应该让一个类使用一种类型的参数。你喜欢的任何类型,无论什么似乎都是最简单的。

然后发布一个新问题以及您实际获得的内容。解释您从哪里获取这些新参数(您不会在您的OP中说出来)。这并不难,只是有点单调乏味的所有不同的可能性。坚持下去,它就会完成。