"中断"和"返回"之间的区别



在下面的代码中,当我使用"break"而不是"return"时,它还会打印第二个println((。为什么会这样?

public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("Enter n : ");
int num = scan.nextInt();
for(int count = 2; count <= num/2; count++) {

if(num%count == 0) {
System.out.println(num + "is not a prime number.");
**return**;
}

}
System.out.println(num + "is a prime number.");
}

这里有一个很好的例子来解释差异:

void explainBreak() {
int i = 10;
while (i > 0) {
if (i < 5) {
break;
}
System.out.println(i);
i -= 1;
}
while (i > 0) {
System.out.println(i);
i -= 1;
}
}

其输出为:

10
9
8
7
6
5
4
3
2
1

让我们用返回代替中断:

void explainBreak() {
int i = 10;
while (i > 0) {
if (i < 5) {
return;
}
System.out.println(i);
i -= 1;
}
while (i > 0) {
System.out.println(i);
i -= 1;
}
}

这将返回:

10
9
8

编辑

简言之:

break:断开当前回路(如果有(

return:返回调用函数的父调用者

break只是终止For循环,而不是整个执行。(将执行第二次println(。CCD_ 4将完成执行并切换到调用主方法的调用方。

我试过你的代码,我想你只需要借助你的代码就能知道其中的区别。看看这是你的代码:

import java.util.*;
public class HelloWorld{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("Enter n : ");
int num = scan.nextInt();
for(int count = 2; count <= num/2; count++) {

if(num%count == 0) {
System.out.println(num + " is not a prime number.");
return;
}

}
System.out.println(num + "is a prime number.");
}
}

当您编写return关键字时,它将终止具有return关键字的函数,这里您的主函数是在第一个System.out.println(num+"不是素数"(之后唯一具有的函数;行中,它将退出主函数,并且不会执行进一步的代码。但这里的诀窍是,只有当它不是素数时,它才会发生,因为你已经把它写在if条件中了。因此,对于一个素数,比方说5,它将检查if条件if(num%count==0(,它将为false,因此它将在for循环结束后打印:System.out.println(num+"是一个素数。"(;

返回图像

现在以我们在这里休息时的情况为例:

import java.util.*;
public class HelloWorld{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("Enter n : ");
int num = scan.nextInt();
for(int count = 2; count <= num/2; count++) {

if(num%count == 0) {
System.out.println(num + " is not a prime number.");
break;
}

}
System.out.println(num + " is a prime number.");
}
}

它将检查if条件打印行System.out.println(num+"不是素数"(;以及从";循环;这意味着它将从循环中出来,在这种情况下,只有for循环被终止。因此for循环之后的下一条指令将正常工作。中断语句图像

break将停止for循环的进一步执行,但循环后的代码将照常继续。由于第二次打印在循环之外,因此将执行该行。

return语句会将您从主方法中吐出,之后什么也不执行。

一般经验法则";如果遇到return语句,那么除了finally块和包含return的try块相关之外,函数中除此之外的任何内容都不会执行;。

Break用于退出循环,而return用于返回调用它的步骤或停止进一步执行。

最新更新