做while循环 - 只有两次循环 - 应循环8次
问题描述:
这个循环只循环两次......做while循环 - 只有两次循环 - 应循环8次
int currentPosition = 10;
int nextPosition;
do
{
nextPosition = currentPosition + 1;
sectionSem[nextPosition].P(); // wait for the section ahead to be
// free
trackSections[nextPosition] = "[A" + trainName + "]"; // move
// forward
trackSections[currentPosition] = "[..]"; // clear section vacated
// record the train activity
theTrainActivity.addMovedTo(nextPosition);
sectionSem[currentPosition].V(); // signal the section you vacated
// now free
currentPosition += 1;
} while (currentPosition < 18);
任何想法,为什么?它应该循环8次?
答
错误在你的代码是介于浏览:
sectionSem[nextPosition].P(); // wait for the section ahead to be
// free
trackSections[nextPosition] = "[A" + trainName + "]"; // move
// forward
trackSections[currentPosition] = "[..]"; // clear section vacated
// record the train activity
theTrainActivity.addMovedTo(nextPosition);
sectionSem[currentPosition].V(); // signal the section you vacated
// now free
要是你把循环下降到只有这个:
public static void main(String []args){
int currentPosition = 10;
int nextPosition;
do
{
nextPosition = currentPosition + 1;
System.out.println("nextPosition = " + currentPosition);
currentPosition += 1;
System.out.println("currentPosition = " + currentPosition);
} while (currentPosition < 18);
}
它运行的8倍。输出如下:
nextPosition = 10
currentPosition = 11
nextPosition = 11
currentPosition = 12
nextPosition = 12
currentPosition = 13
nextPosition = 13
currentPosition = 14
nextPosition = 14
currentPosition = 15
nextPosition = 15
currentPosition = 16
nextPosition = 16
currentPosition = 17
nextPosition = 17
currentPosition = 18
是什么让你觉得它只是循环两次? – Ghost
你已经发布的代码中没有任何内容会导致循环在两次迭代后终止,尽管有可能被某个循环体行调用*做某事。请提供更多信息。 – aliteralmind
任何异常? (只是一个疯狂的猜测,但一个'IndexOutOfBoundsException'可能是什么产生不想要的结果) – Barranka