在下面的代码中,当我使用"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用于返回调用它的步骤或停止进一步执行。