私は自分が作ろうとしているゲームを試しています。for ループを除いて同一のメソッドが 2 つあることがわかりました。これは単に前者の逆です。
同じコードを前後に使えるように作ってみました。私は終わった:
for (int i = start; i != (finish + 1 * ((start < finish) ? 1 : -1)); i += 1 * ((start < finish) ? 1 : -1))
A) B) このコンセプトをみんなと共有したかった。
B) そのようなループの効率に興味があります。アクセス時にターゲット数と増分係数を計算していることは知っていますが、それをテストする方法がわかりません。
C) 作業中に、一時変数を使用せずに 2 つの変数を交換する 1 行を見つけました。読むのに少し時間がかかりますが、これは temp を使用するよりも (コード的に) 優れていますか? (下のメインの 3 行目)
機能をテストしましたが、期待どおりに動作します。2 番目の数値が最初の数値より大きい場合は、カウントアップします。そうでない場合は、カウントダウンします。私のテストコードは次のとおりです。
// A generic loop that can go up or down
import java.io.*;
public class reversable
{
public static int start = 1;
public static int finish = 10;
public static void main(String[] args)
{
for (int i = start; i != (finish + 1 * ((start < finish) ? 1 : -1)); i += 1 * ((start < finish) ? 1 : -1))
{
System.out.println("i = " + i);
}
finish = (start + finish) - (start = finish);
System.out.println("Finish = " + finish);
System.out.println("Start = " + start);
for (int i = start; i != (finish + 1 * ((start < finish) ? 1 : -1)); i += 1 * ((start < finish) ? 1 : -1))
{
System.out.println("i = " + i);
}
finish = 10;
for (int i = start; i != (finish + 1 * ((start < finish) ? 1 : -1)); i += 1 * ((start < finish) ? 1 : -1))
{
System.out.println("i = " + i);
}
}
}
コメントに基づいて、これは受け入れられるでしょうか:
public static void reversable (int i, int j)
{
if (i > j) int inc = -1; // Count down
else int inc = 1; // Count up
j += inc;
for (i; i != j; i += inc)
{
dostuff();
morestuff();
mostuff();
}
}