Java do while循环-仅循环两次-应循环8次
这个循环只循环了两次Java do while循环-仅循环两次-应循环8次,java,Java,这个循环只循环了两次 int currentPosition = 10; int nextPosition; do { nextPosition = currentPosition + 1; sectionSem[nextPosition].P(); // wait for the section ahead to be // free
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);
int currentPosition=10;
int nextPosition;
做
{
下一个位置=当前位置+1;
sectionSem[nextPosition].P();//等待前面的节被删除
//免费的
轨道区段[nextPosition]=“[A”+列车名+”];//移动
//前进
轨道区段[currentPosition]=“[…]”;//清除空出的区段
//记录列车活动
TrainActivity.addMovedTo(下一个位置);
sectionSem[currentPosition].V();//向您腾出的节发送信号
//现在自由了
当前位置+=1;
}而(当前位置<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);
}
是什么让您认为它只循环了两次?您发布的代码中没有任何内容会导致循环在两次迭代后终止,尽管有可能某个循环体行调用的某个内容正在执行某些操作。请提供更多信息。有例外吗?(只是胡乱猜测,但是
索引自动边界异常
可能是生成不希望的结果的原因)此外,您是否尝试过使用调试器?尝试添加以验证它只运行两次。
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