我有一个需要范围作为参数的函数。域为[0-100],它包括0和100.范围参数可以是:
[1-8, 18, 20-88, 90-92]
或
[1, 10-30]
范围不重叠。我对机制感兴趣 - 如何最好地传递范围参数?阵列?或使用变量参数?
答案 0 :(得分:5)
使用Range对象列表:
class Range
{
int low;
int high;
Range(int low, int high)
{
this.low = low;
this.high = high;
}
}
List<Range> rangeArray = new ArrayList<Range>();
然后分配这样的范围:
rangeArray.add(new Range(1,8));
rangeArray.add(new Range(18,18));
rangeArray.add(new Range(20,88));
rangeArray.add(new Range(90,92));
答案 1 :(得分:1)
使用静态方法r()
以某种表示形式创建范围
func( r(1,8), r(18), r(20,88), r(90,92) )
或使用方法链接创建范围列表
func( Range.r(1,8).r(18).r(20,88).r(90,92) )
或者,正如我的笑话评论
func(1,-8, 18, 20,-88, 90,-92)
或者,使用100*x+y
代表(x,y)
func( 1_08, 18, 20_88, 90_92 );