[英]What is the “continue” keyword and how does it work in Java?
我第一次看到这个关键字,我想知道是否有人可以向我解释它的作用。
continue
关键字? continue
有点像goto
。 你熟悉break
吗? 相比之下,更容易考虑它们:
break
终止循环(跳转到它下面的代码)。
continue
终止循环中当前迭代的其余代码处理,但继续循环。
没有标签的continue
语句将从最里面的while
或do
循环的条件和最里面的for
循环的更新表达式重新执行。 它通常用于提前终止循环的处理,从而避免深度嵌套的if
语句。 在下面的示例中, continue
将获取下一行,而不处理循环中的以下语句。
while (getNext(line)) {
if (line.isEmpty() || line.isComment())
continue;
// More code here
}
带有标签, continue
将从带有相应标签的循环重新执行,而不是从最里面的循环开始。 这可以用来逃避深层嵌套的循环,或者只是为了清楚起见。
有时continue
也用作占位符,以使空循环体更加清晰。
for (count = 0; foo.moreData(); count++)
continue;
没有标签的相同语句也存在于 C 和 C++ 中。 Perl 中的等价物是next
。
不推荐使用这种类型的控制流,但如果您选择这样做,您也可以使用continue
来模拟有限形式的goto
。 在以下示例中, continue
将重新执行空的for (;;)
循环。
aLoopName: for (;;) {
// ...
while (someCondition)
// ...
if (otherCondition)
continue aLoopName;
让我们看一个例子:
int sum = 0;
for(int i = 1; i <= 100 ; i++){
if(i % 2 == 0)
continue;
sum += i;
}
这将只得到从 1 到 100 的奇数的总和。
如果您将循环体视为子例程,那么continue
有点像return
。 相同的关键字存在于 C 中,用于相同的目的。 这是一个人为的例子:
for(int i=0; i < 10; ++i) {
if (i % 2 == 0) {
continue;
}
System.out.println(i);
}
这将仅打印出奇数。
通常,我将continue
(和break
)视为代码可能使用一些重构的警告,尤其是在while
或for
循环声明不是立即可见的情况下。 方法中间的return
也是如此,但原因略有不同。
正如其他人已经说过的, continue
移动到循环的下一次迭代,而break
移出封闭循环。
这些可能是维护定时炸弹,因为除了上下文之外,在continue
/ break
和它正在continue
/ break
的循环之间没有直接联系; 添加一个内部循环或将循环的“胆量”移动到一个单独的方法中,并且您对continue
/ break
失败有一个隐藏的影响。
恕我直言,最好将它们用作最后手段,然后确保它们的使用在循环的开始或结束时紧密组合在一起,以便下一个开发人员可以在一个屏幕中看到循环的“边界” .
continue
、 break
和return
(方法末尾的 One True Return 除外)都属于“隐藏 GOTO”的一般类别。 他们将循环和函数控制放在意想不到的地方,这最终会导致错误。
Java 中的“continue”表示跳到当前循环的结尾,意思是:如果编译器看到continue in a loop,它将进入下一次迭代
示例:这是一个打印从 1 到 10 的奇数的代码
每当编译器看到继续进入下一次迭代时,它就会忽略打印代码
for (int i = 0; i < 10; i++) {
if (i%2 == 0) continue;
System.out.println(i+"");
}
正如已经提到的, continue
将跳过处理它下面的代码,直到循环结束。 然后,你将移动到循环的条件和运行下一次迭代如果这种情况仍持有(或有一个标志,在表示为循环的条件)。
必须强调的是,在do - while
的情况下,您将在continue
之后移动到底部的条件,而不是在循环的开头。
这就是为什么很多人无法正确回答以下代码将生成什么的原因。
Random r = new Random();
Set<Integer> aSet= new HashSet<Integer>();
int anInt;
do {
anInt = r.nextInt(10);
if (anInt % 2 == 0)
continue;
System.out.println(anInt);
} while (aSet.add(anInt));
System.out.println(aSet);
*如果你的答案是aSet
只包含 100% 的奇数......你错了!
Continue是 Java 中的一个关键字,用于跳过当前迭代。
假设你想打印从 1 到 100 的所有奇数
public class Main {
public static void main(String args[]) {
//Program to print all odd numbers from 1 to 100
for(int i=1 ; i<=100 ; i++) {
if(i % 2 == 0) {
continue;
}
System.out.println(i);
}
}
}
上述程序中的continue语句仅在i为偶数时跳过迭代,并在i为奇数时打印i的值。
Continue语句只是将您带出循环,而不执行循环内的其余语句并触发下一次迭代。
考虑 If Else 条件。 continue 语句执行条件中的内容并退出条件,即跳转到下一次迭代或条件。 但是 Break 离开了循环。 考虑以下程序。 '
public class ContinueBreak {
public static void main(String[] args) {
String[] table={"aa","bb","cc","dd"};
for(String ss:table){
if("bb".equals(ss)){
continue;
}
System.out.println(ss);
if("cc".equals(ss)){
break;
}
}
System.out.println("Out of the loop.");
}
}
它将打印: aa cc Out of the loop。
如果您使用 break 代替 continue(After if.),它只会打印 aa 并退出循环。
如果满足条件“bb”等于 ss: For Continue:它进入下一次迭代,即“cc”.equals(ss)。 对于 Break:它退出循环并打印“退出循环”。
我参加聚会有点晚了,但是...
值得一提的是, continue
对于所有工作都在控制循环的条件表达式中完成的空循环很有用。 例如:
while ((buffer[i++] = readChar()) >= 0)
continue;
在这种情况下,读取字符并将其附加到buffer
的所有工作都在控制while
循环的表达式中完成。 continue
语句用作循环不需要主体的视觉指示符。
它比等价物更明显一点:
while (...)
{ }
并且绝对比使用空语句更好(更安全)的编码风格,例如:
while (...)
;
基本上在java中, continue 是一个语句。 continue 语句根据特定条件跳转到循环的下一次迭代。
continue 语句通常与循环一起使用以跳过当前迭代。 有关在 Java 中使用它的方式和时间,请参阅下面的链接。
https://www.flowerbrackets.com/continue-statement-java/
希望有帮助!!
当您需要立即跳转到循环的下一次迭代时,在循环控制结构中使用 continue 语句。
它可以与 for 循环或 while 循环一起使用。 Java continue 语句用于继续循环。 它继续程序的当前流程,并在指定条件下跳过剩余的代码。
在内部循环的情况下,它仅继续内部循环。
我们可以在所有类型的循环中使用 Java continue 语句,例如 for 循环、while 循环和 do-while 循环。
例如
class Example{
public static void main(String args[]){
System.out.println("Start");
for(int i=0; i<10; i++){
if(i==5){continue;}
System.out.println("i : "+i);
}
System.out.println("End.");
}
}
输出:
Start
i : 0
i : 1
i : 2
i : 3
i : 4
i : 6
i : 7
i : 8
i : 9
End.
[数字5是跳过]
continue
必须在循环内,否则会显示以下错误:
在循环外继续
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.