2013-07-19 5 views
1

У меня есть программа, которую можно запустить из командной строки с помощью -R, чтобы указать диапазон возвращаемых результатов. -R принимает один аргумент формы n:n.Каков наилучший способ получить ряд результатов?

Видно, что n:n может быть 1-5 или 10000-500000, что является лучшим способом получить значения по обе стороны от :?

После прохождения моего ARG следующий -R к способу я начал делать следующее:

private int[] parseRangeResults(String range) { 
    int[] rangeResults = new int[2]; 

    if(!(range.contains(":"))) { 
     throw new Exception("Invalid range syntax"); 
    } 

    String[] numbers = range.split(":") 
    rangeResults[0] = Integer.parseInt(numbers[0]); 
    rangeResults[1] = Integer.parseInt(numbers[2]); 

    return rangeResults; 
} 

Но я думаю, что это ломается, если кто-то ставит специальные символы, или 1000:::::5000, так что это лучший способ обработки этого ?

+0

Если проблема только в том, что она не будет работать, если кто-то дает ввод мусора, я не уверен, что это проблема – StephenTG

+0

@StephenTG Я медленно, уход разработать? –

+0

Хотя теперь, когда я думаю об этом, в зависимости от допустимого диапазона, отрицательные значения могут быть проблематичными. – StephenTG

ответ

3

Лучший способ проверить ввод с помощью регулярных выражений, если это соответствует regex("\\d*-\\d*"), тогда ваш выход правильный. это код для функции

String regex = "(\\d*):(\\d*)"; 
    Pattern checkInput = Pattern.compile(regex); 

    Matcher matcherInput = checkInput.matcher(range); 

    if(matcherInput.matches()){ 
     rangeResults[1] = Integer.parseInt(matcherInput.group(1)); 
     rangeResults[2] = Integer.parseInt(matcherInput.group(2)); 



    } 
+1

Вот что я имел в виду, когда я сказал ошибка-ловушка для плохого ввода. Мне не хватало опыта регулярного выражения, чтобы на самом деле придумать эту магию. – StephenTG

+0

Или я должен сказать regexpertise? – StephenTG

+0

Это не работает ... Я предполагаю, что это потому, что моя функция передает строку, и я пытаюсь выполнить проверку целых чисел регулярного выражения по строке. –

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