2014-09-22 23 views
0

简单地表达这个表达式的最佳方式是什么,以便我不必设置colFinished两次? (colFinished在外部循环的每次运行将被重置为false)如何在不初始化布尔值的情况下使用while循环条件?

+1

“colFinished必须被重置为假外循环的每次运行” - 为什么?这没有明显的理由。 – Seelenvirtuose 2014-09-22 07:48:33

+0

如果你想要布尔标志'colFinished',因为你希望从内部的for循环'break',你可能要考虑使用一个标签。 – 2014-09-22 08:01:20

+0

@Seelenvirtuose我在给你的小片段中没有说清楚,但是外层循环的每个运行都是一个不同的列,所以我重置了检查列是否完成的检查。 – rosstex 2014-09-22 08:05:37

回答

2

如果你有for循环外没有用的colFinished,请尝试:

for (int c = 0; c < SIZE; c += 1) { 
    boolean colFinished = false; 
    ............... 

否则我认为没有另一种方式。

+1

一个好的编译器会优化你的代码,因为你在循环中声明了colFinished。在外部声明它并在循环内设置它为false。 – null 2014-09-22 07:52:19

+0

@null:是的。但我认为OP不知道这种类型的语法。这就是为什么要问这样一个问题。 – blackSmith 2014-09-22 07:53:47

+1

@null如果变量只在循环内部有意义,那么我强烈建议在循环中声明它。这是关于意图的。让编译器完成它的工作。作为一名程序员,您应该编写可读的代码,以表达您的意图! – Seelenvirtuose 2014-09-22 07:54:33

0

你可以声明里面的变量的第一个for循环:

for (int c = 0; c < SIZE; c += 1) { 
    boolean colFinished = false; 
    while (!colFinished) { 
     for (int r = 1; r < SIZE; r++) { 
     ... 
相关问题