没有索引声明的for循环

时间:2011-11-21 07:26:51

标签: java loops for-loop conditional-statements increment

所以我在一个地方声明一个变量并初始化它。现在稍后我需要使用它来循环,而它仍然是正的所以我需要减少它。对我来说,使用条件和减量进行循环调用for for但是对于它我们缺少初始化的第一部分。但我不需要初始化任何东西。那么我该如何以一种很好的方式解决这个问题。

for (space = space; space > 0; space--)//my first way to do it but ide doesnt like it

第二种方式:

for (; space > 0; space--)//my friend recommended me this way but looks kind weird

我有更多的方法可以让循环只有条件和增量/减量吗?

P.S拼写检查不知道“减量”是一个单词。我很确定它是......

5 个答案:

答案 0 :(得分:5)

另一种方式就是这个:

Integer i = 10;
while(--i>0) {
    System.out.println(i);
}

当i为0且条件为假时...所以..它将从9打印到1(9项)

Integer i = 10;
while(i-->0) {
    System.out.println(i);
}

将从9打印到0 ...(10项);

答案 1 :(得分:4)

后一种方式是合理的。另一种选择 - 如果你没有任何中断/继续陈述 - 将是:

while (space > 0)
{
    // Code

    space--;
}

答案 2 :(得分:0)

使用while循环?

while (space > 0) { /* code */ space--; }

如果你不需要循环体中space的值:

while (space-- > 0) { /* code */ }

答案 3 :(得分:0)

在我看来,这是一个正确的方法。您可以使用能够向前和向后移动的迭代器,但这并不一定都对您的代码有价值。

答案 4 :(得分:0)

当你编写代码时,你应该永远记住,你不仅仅是在编写它以便你现在能够理解它......对任何未来的读者来说都应该是可以理解的(在你忘记之后可能就是你了你为什么这样做,只要他们有一些编码知识。在我看来,您可能正在尝试重新使用space变量,因为您已经拥有了它。如果它增加了可读性,那么没有错误开始一个新的。因此,您可能需要考虑在for循环中使用int i = space; - 我确定您的计算机将在没有堆栈溢出的情况下进行管理,如果您原谅我糟糕的双关语; - )

实际上,考虑将循环重构为一个单独的私有方法,当然,为了可读性而恰当地命名,将space作为参数传递,并将变量设置为返回的结果。很高兴为您提供代码示例,如果您解释在循环中尝试实现的目标。