【发布时间】:2012-03-09 06:41:28
【问题描述】:
我有一个函数返回我的 int 值列表取决于值的一部分:
private List<int> GetColumn(int total, int column)
{
List<int> retList = new List<int>();
if (total <= 0)
{
return retList;
}
if (column < 0 || column > 2)
{
column = 0;
}
int pageSize = total / 3;
int startIndex = column * pageSize;
int endIndex = column * pageSize + pageSize;
if (endIndex > total)
{
endIndex = total;
}
for (int i = startIndex; i < endIndex; i++)
{
retList.Add(i);
}
return retList;
}
但它工作错了,因为: 获取列(17, 0)
它返回 [0,1,2,3,4],但应该返回 [0,1,2,3,4,5]
对于 GetColumn(17, 1) - [6,7,8,9,10,11]
对于 GetColumn(17, 2) - [12,13,14,15,16]
对于 16,它应该返回:
对于 GetColumn(16, 0) - [0,1,2,3,4,5]
对于 GetColumn(16, 1) - [6,7,8,9,10]
对于 GetColumn(16, 2) - [11,12,13,14,15]
我应该对我的功能进行哪些更改?谢谢!
【问题讨论】:
-
您的第一个示例为 (17,1) 调用返回 6 个元素,但为 (17,0) 和 (17,2) 调用返回 5 个元素。如果元素的数量不能被三整除,这个逻辑将如何工作?一个随机的“页面”应该得到额外的元素,还是总是在中间?如果有两个“额外”元素呢?中间第一个,还是中间最后一个?
-
int除以int仍然是int。至少有一个操作数必须是float/double才能使结果非int。 -
不,分3个以上没有必要