我一直在尝试我正在尝试制作的游戏。我发现我有两种相同的方法,除了 for 循环,它只是前者的相反。
我试图做到这一点,这样我就可以向前或向后使用相同的代码。我最终得到:
for (int i = start; i != (finish + 1 * ((start < finish) ? 1 : -1)); i += 1 * ((start < finish) ? 1 : -1))
A) B) 我想和大家分享这个概念。
B)我很好奇这种循环的效率。我知道它在访问时计算目标数和增量因子,但我不知道如何测试它。
C)当我在它的时候,我发现了一行可以交换两个变量而不使用临时变量。阅读需要一点时间,但这是否比使用 temp 更好(代码方面)?(下面主要的第三行)
我已经对其功能进行了测试,它按预期运行。如果第二个数字大于第一个数字,则向上计数。如果没有,它会倒计时。我的测试代码是:
// 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();
}
}