没有索引声明的for循环

所以我在一个地方声明一个变量并初始化它。 现在稍后我需要使用它来循环,而它仍然是正的,所以我需要减少它。 对我来说,使用条件和减量进行循环调用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 

有没有更多的方法让我只有一个条件和增量/减量的循环?

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

另一种方式是这个:

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

当我是0而条件是假的…所以..它将打印从9到1(9项)

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

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

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

 while (space > 0) { // Code space--; } 

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

使用while循环?

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

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

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

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

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