Java 获得一系列结果的最佳方法是什么?

Java 获得一系列结果的最佳方法是什么?,java,regex,string,parsing,int,Java,Regex,String,Parsing,Int,我有一个程序,可以从命令行运行,使用-R指定要返回的结果范围。-R采用一个参数,其形式为n:n 考虑到n:n可能是1-5或10000-500000,获取两侧值的最佳方法是什么: 将arg following-R传递给方法后,我开始执行以下操作: private int[] parseRangeResults(String range) { int[] rangeResults = new int[2]; if(!(range.contains(":"))) { thro

我有一个程序,可以从命令行运行,使用
-R
指定要返回的结果范围。
-R
采用一个参数,其形式为
n:n

考虑到
n:n
可能是1-5或10000-500000,获取
两侧值的最佳方法是什么:

将arg following
-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
,那么最好的处理方法是什么?

检查输入的最好方法是使用正则表达式如果这个
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));



    }

如果唯一的问题是,如果有人提供垃圾输入,它将不起作用,我不确定这是一个错误problem@StephenTG我很慢,想详细说明一下吗?虽然现在我考虑了一下,根据允许的范围,负值可能会有问题,但我认为这最好地总结了我的原始观点:。稍微不同的是,你需要考虑负数吗?在这种情况下,你所拥有的对于任何有效的输入都应该可以很好地工作。你可能想做的就是加入一点错误陷阱,以防用户给你一些无效的东西。编辑:我的研究表明string.split会删除“-”,所以你应该分析数字[0]和数字[1]这就是我说的错误输入陷阱的意思。我缺乏regex的专业知识来真正想出这个magicOr我应该说regex的专业知识吗?这不管用。。。我假设这是因为我的函数正在传递一个字符串,并且我正在尝试对一个字符串执行正则表达式整数检查。因为您更改了输入,请尝试使用组,这样会更容易。必须使用的正则表达式是(\d*):(\d*),并获取组1和2。