在下面的代码中,当我使用“ 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.");
}
答案 0 :(得分:1)
这是一个解释差异的好例子:
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
让break用return代替:
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
:返回调用该函数的父调用者
答案 1 :(得分:0)
break
仅终止For Loop,而不终止整个执行过程。 (第二个println将执行)。
return
将完成执行并移交给调用主方法的调用方,并且在该方法的该点之后将不再执行任何操作(不会执行第二个println)。
答案 2 :(得分:0)
break
只会停止for循环的进一步执行,但循环后的代码将照常继续。由于第二次打印不在循环中,因此将执行该行。
return
语句会将您吐出main方法,然后执行该操作就不会执行任何操作。
一般经验法则:“如果遇到return语句,则除了与包含return的try块相关联的finally块外,将不执行该函数之外的任何事情。”
答案 3 :(得分:0)
我已经尝试了您的代码,我想您将仅借助代码来了解其中的区别。看到这是您的代码:
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.");
}
}
它将检查条件条件是否打印行System.out.println(num +“不是素数。”);和“循环”的中断意味着它将退出循环,在这种情况下,仅for循环终止。因此for循环之后的下一条指令会正常工作。 Break Statement image
答案 4 :(得分:-1)
要从循环中退出时使用中断,而返回则用于返回到调用它的步骤或停止进一步执行。