假设我有1到5之间的数字,我想在以下时间之间实现简单的循环:
在decrease
或increase
新值之后检查1到5之间(即边界条件是循环的,所以),
如果大于5则必须为0 如果它小于0那么必须是5
如果它不大于5且不小于0,那么值可以decrease
或increase
。
它在两个数字之间循环,我的代码似乎不正确
/* listCount is 5 */
/* currentPosition is 1 */
/* sample( currentPosition -- ) */
protected void sample(int position) {
if (position < 0 && position < listCount)
position = 5;
else if (position >= listCount)
position = 0;
else
currentPosition = position;
}
此代码中的 currentPosition --
为0,那么必须为5,否则可以减少
了解更多信息:
增加位置直到它不是6.如果它> 5则必须是0,或者减少位置直到它不是0.如果它&lt; 1然后必须是5
答案 0 :(得分:0)
此逻辑关闭
if (position < 0 && position < listCount)
如果position = 1
它会将位置重置为5 - 这什么都不做。
我认为你想要的功能是:
protected void sample(int position) {
if (position < 0) {
currentPosition = 5;
} else if (position >= listCount) {
currentPosition = 0;
} else {
currentPosition = position;
}
}
我建议单独增加和减少功能
protected void increase() {
if (currentPosition == listCount) {
currentPosition = minValue;
} else {
currentPosition++;
}
}
protected void decrease() {
if (currentPosition == minValue) {
currentPosition = listCount;
} else {
currentPosition--;
}
}
答案 1 :(得分:0)
我想,如果我理解正确,你想继续循环吗? 无论如何,这就是我从你关于'循环'的问题中删除评论中的信息。以两种不同的方法分割“循环”和“循环”是个好主意。循环,你可以使用这个:
public void increaseloop(int position)
{
if(position > 5 || position < 0){
position = 0;
}
for(; position <= 5; position++){
System.out.println(position);
if(position == 5){
position = -1;
}
}
}
这将不断循环数字0,1,2,3,4,5。我确信,如果这实际上是您正在寻找的,您将能够实现该方法以循环。