我一直在試圖解決一個編程問題,並且遇到了一個範圍問題。這是問題的一個SCE:嵌套for循環範圍
for (int Hole1 = 1; Hole1 < beavers; Hole1++) {
list = exampleList;
for (int t = 0; t < Hole1; t++) {
temp.add(list.get(0));
list.remove(0);
}
for (int p = 0; p < Hole1; p++) {
list.add(temp.get(temp.size() - 1));
temp.remove(temp.size() - 1);
}
exampleList2 = list;
for (int Hole2 = 1; Hole2 < beavers; Hole2++) {
list = exampleList2;
for (int t = 0; t < Hole2; t++) {
temp.add(list.get(0));
list.remove(0);
}
for (int p = 0; p < Hole2; p++) {
list.add(temp.get(temp.size() - 1));
temp.remove(temp.size() - 1);
}
exampleList3 = list;
for (int Hole3 = 1; Hole3 < beavers; Hole3++) {
list = exampleList3;
for (int t = 0; t < Hole3; t++) {
temp.add(list.get(0));
list.remove(0);
}
for (int p = 0; p < Hole3; p++) {
list.add(temp.get(temp.size() - 1));
temp.remove(temp.size() - 1);
}
System.out.println(list.toString() + " " + Hole1 + " " + Hole2 + " " + Hole3);
if (check(list))
System.out.println("match");
}
}
}
我的問題是examplelist3改變了的hole3for loop
每次迭代值,但是從我的理解每個loop
完成它在移動之前的迭代。任何人都知道發生了什麼?
編輯*除去SCE和發佈的代碼,而不是
也許你可以添加你想要實現的?看起來你正在以某種尷尬的方式做一些嵌套的迭代/分配。 – RAnders00
'每個for-loop在繼續之前完成它的迭代。「這就是實際發生的事情。 –
嗯,這是我無法破解的比賽中的一個問題。您從5 4 3 2 1列表開始,通過3個「洞」(深度介於1和n-1之間)運行它們。 [問題可以在第5頁看到](http://www.progolymp.se/static/arkiv/kval15.pdf)。然後在特定的位置匹配它們並獲得鑽孔深度。 – AlexVestin