转换循环(Java初学者问题)

循环之间的转换是否总是这样? 或者有一些情况不是吗? 当我在考试中解决这样的问题时,检查的最快方法是什么?

For Loop:

for(xx;yy;zz) { aa } 

循环时:

  xx while(yy) { aa zz } 

做同时:

  xx do { aa zz } while(yy) 

你有几个错误。 特别是do-while循环是不正确的,因为它总是执行至少一次迭代,而for循环和while循环不是这种情况。

 for(x(); y(); z()) { a(); } x(); while(y()) { a(); z(); } x(); if(y()) { do { a(); z(); } while(y()) } 

其他成员已经涵盖了执行语义。 但我想添加变量作用域语义。

在Java中,您可以这样做:

 for (Iterator i = localList.iterator(); i.hasNext(); ) { String element = i.next(); if (...) { i.remove(); } } for (Iterator i = importList.iterator(); i.hasNext(); ) { String element = i.next(); if (...) { i.remove(); } } 

变量’i’使用两次。

为了将其转换为具有正确范围的while循环,您需要使用其他代码块:

 { Iterator i = localList.iterator(); while (i.hasNext()) { String element = i.next(); if (...) { i.remove(); } } } { Iterator i = importList.iterator(); while (i.hasNext()) { String element = i.next(); if (...) { i.remove(); } } } 

请注意附加{ ... }如何允许您使用相同的变量名称。

虽然在Java中不那么重要,但在C ++这样的语言中,范围界定除了能够使用相同的变量名之外还有重要的影响。 对象破坏,IIA(实例化是获取)等受到附加块的影响。

for语句和while语句或do-while语句之间的唯一区别是for还指定了迭代器的初始化和增量。
例如,让我们使用一个Iterator ,它可以用Java来迭代一个向量或类似的东西(例如链表):

 //we already have a variable v whom type implements List interface; for (Iterator vectorIterator = v.iterator(); vectorIterator.hasNext(); ) { //I left blank after the last ";" because there should come // the increment statement, and I need to store the .next() return value. int current = vectorIterator.next(); } 

这是while版本:

 Iterator vectorIterator = v.iterator(); while (vectorIterator.hasNext()) { int current = vectorIterator.next(); } 

do-whilewhile版本非常相似。

我确实给了你这个更复杂的例子,向你展示你做的任何事情,无论你有多么复杂,你都可以做到。

编辑do-while语句作为do-while的替代存在,唯一的区别是在迭代和迭代时检查循环条件。 所以你可以像这样使用do-while来制作上面的例子:

 Iterator vectorIterator = v.iterator(); if (vectorIterator.hasNext()) { do { int current = vectorIterator.next(); } while (vectorIterator.hasNext()); } 

但这样做没有任何意义。 您应该将每个工具用于自己的目的。

 // This class demonstrates the transliteration // between while, for, and for-each loop syntax public class LoopTest { // This method definition showcases do-while-loop syntax public void doWhileLoop(Person[] people) { int i=0; do { Person p = people[i]; System.out.println(p.getName()); i++; }while(i 

for循环 , while循环和do-while循环之间有一些基本的区别,你应该知道:

1)当您知道必须循环多少次时,最好使用For循环。 例如,当循环遍历数字数组时,您需要循环遍历数组中的元素。

对于循环结构:

对于循环结构

2)当你不知道你需要循环多少次时,最好使用循环。 例如,当从文件中读取文本行时,程序将继续读取直到它到达文件末尾,而不事先知道它将读取多少行。

循环结构:

而循环结构

3)Do-while循环(aka do循环)最好用于你不知道你需要循环多少次并且你想要至少执行一次循环。 例如,如果程序连续从用户获取输入并输出它,直到用户输入字母“q”,那么您将使用do-while循环,因为您需要至少使用一次用户的输入。

Do-while循环结构:

Do-while循环结构

来源: Java中的循环 – 终极指南