Передача значений из одного класса в основной? - PullRequest
0 голосов
/ 22 апреля 2020

так вот мой вопрос и мой подход. В основном классе у меня есть этот код для анализа ввода командной строки. Он передается другому классу для обработки ввода.

Мой вопрос: как я могу передать значения из хэш-карты в основной метод для дальнейшей обработки, но ТОЛЬКО если все значения введены правильно и ничего не пропущено (что должно быть обнаружено при исключениях)?

public static void main(String[] args) {
     try {
            CommandLineParser commandLineParser = new CommandLineParser(args);  
}
    }

А в другом классе у меня CommanLineParser

public class CommandLineParser {

public CommandLineParser(String[] args) {
    Map<String, String> hash_map = new HashMap<>();

}

Заранее спасибо!

1 Ответ

1 голос
/ 22 апреля 2020

у вашего основного метода уже есть переменные в области видимости вашего класса, вы можете обращаться к ним следующим образом:

String s_mode = commandLineParser.getMode();

, которые либо будут нулевыми, либо будут иметь ожидаемое вами значение.

Вы могли бы иметь в своем классе логическое значение, чтобы определить, все ли произошло так, как вы хотели, и вернуть его сначала для удобства или вместо нулевой проверки всего.

** edit - Но я бы хотел создать метод, подобный;

public boolean processArgs(String args)) 

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

Итак будет делать;

CommandLineParser commandLineParser = new CommandLineParser();
boolean success = commandLineParser.process(args);

if (success)
{
    //get stuff
}

*** Вам нужен только один набор результатов? Поскольку вы можете установить процессор в качестве рабочего класса, затем правильно смоделировать свои объекты, а затем составить список объектов, в которых вы можете вызывать эти методы в каждом экземпляре.

Вы также должны фактически установить их в какой-то момент в вашем методе;

mode = hash_map.get("r");

вместо;

String mode = hash_map.get("r");

**** отредактируйте, чтобы проверить, что вы просили в комментариях;

if (!mode.equals("s") || mode.equals("sd") || mode.equals("v") || mode.equals("vd") || mode.equals("d"))

, если режим не "s" (означает!), А sd или v или vd или d

Вы говорите, что хотите;

String s_mode = hash_map.get("r");
if (s_mode.matches("s|sd|v|vd|d"))
{
    mode = s_mode; //or whatever you want to do with it
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...