これは興味深い質問だと思います。一方向にループできますが、同じ行で逆方向にループできますか?どういう意味か説明させてください。次にコード例を示します。
for(int i = 0; i < 5; i++) { // we all know the output will be 0,1,2,3,4
上記のステートメントを印刷できるように回避策があるかどうかを探しています0,1,2,3,4,3,2,1,0。
これは興味深い質問だと思います。一方向にループできますが、同じ行で逆方向にループできますか?どういう意味か説明させてください。次にコード例を示します。
for(int i = 0; i < 5; i++) { // we all know the output will be 0,1,2,3,4
上記のステートメントを印刷できるように回避策があるかどうかを探しています0,1,2,3,4,3,2,1,0。
回答:
どうぞ
public class Main {
public static void main(String[] args) {
for (int i = 0, j = 8; i < 5 || j >= 0; i++, j--) {
System.out.print((i < 5 ? i : j) + " ");
}
}
}
出力:
0 1 2 3 4 3 2 1 0
for(int i = 0; i < 9; i++){
int j = i;
if(i >= 5)
j = 8 - i;
System.out.println(j);
}
これを行う簡単な方法はありませんが、いくつかの変更を加えると、方向を変えることができるループができます。
for(int i = 0, direction = 1; 0 <= i && i < 5; direction = (i == 5-1) ? -direction : direction, i += direction)
System.out.println(i);
Java(汎用、0からNの間である必要はありません):
public static void forwardAndBack(int min, int max) {
for (int i = 0; i < (max - min + 0.5) * 2; i++) {
System.out.println((min + i) > max ? max - (min + i - max) : min + i);
}
}
forwardAndBack(1, 4);
JavaSciptで(ライブデモを見ることができるように):
function forwardAndBack(min, max) {
for (let i = 0; i < (max - min + 0.5) * 2; i++) {
console.log(min + i > max ? max - (min + i - max) : min + i);
}
}
forwardAndBack(1, 4);
.as-console-wrapper { max-height: 100% !important; top: 0; }