2014-11-03 7 views
-2

Фон: Мне было предложено создать проект, который включает в себя несколько классов, которые хранят различную информацию, а затем меню, которое позволяет пользователям создавать объекты каждого класса и вызывать различные методы из каждого (т. е. «среднее значение всех сохраненных номеров» и т. д.)Создание объектов из пользовательского ввода - конструктор требует параметров разных типов

Я создал класс «меню» со сканером, позволяющим вводить данные пользователя, который печатает список ключевых слов для пользователей введите, чтобы выбрать параметр. Итак, 'type' ClassA 'для создания ClassA и т. Д. Затем я сохранил массив всех возможных ключевых слов. Пользовательский ввод хранится в переменной экземпляра «keyword» и проверяется на массив для точности.

Как только это подтвердится, я хочу настроить цикл «if», который вызовет метод для каждого возможного ключевого слова. Например,

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

и т. Д. Затем я могу настроить частные методы в пределах класса меню, которые позволяют мне делать это.

Проблема: Проблема заключается в том, что некоторые из конструкторов и методов требуют параметров как целого, так и строкового типа. Сканер сохраняет все входные данные в виде строк и запрашивает параметры прямо из метода (скажем, createClass1()) останавливает меня от вызова его из цикла if.

У кого-нибудь есть идеи, как я могу обойти этот блокпост?

ответ

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). Это не сложно, просто немного утомительно со всеми различными возможностями. Придерживайтесь этого, и это будет сделано.

Смежные вопросы