2013-07-19 52 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

這不起作用...我假設這是因爲我的函數傳遞一個字符串,我試圖對字符串進行正則表達式整數檢查。 –

相關問題