1.在JAVA中如何跳出当前的多重嵌套循环
在java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的的break语句,即可跳出
外层循环。例如:
ok:
for(int i=0;i<10;i++)
{
for(int j=0;j<10;j++)
{
system.out.println("i="+i+",j="+j);
if(j==5)break ok;
}
}
另外,我个人觉得通常不使用标号这种方式,而是让外层的循环条件表达式的结果可以收到里层循环体代码的控制,例如,要在二维数组中查
找到某个数字。
int arr[][]={{1,2,2},{2,2,5},{4,4}};
boolean found =false;
for(int i=0;i<arr.length&&!found;i++)
{
for(int j=0;j<arr[i].length;j++)
{
system.out.println("i="+i+",j="+j);
if(arr[i][j]==5)
{
found=true;
break;
}
}
}
2.break和continue的区别?
break是结束整个循环体,continue是结束单次循环(跳出当前循环,到下一步)。
例子1:
while(x++ < 10)
{
if(x == 3)
{
break;
}
printf("%d\r\n", x);
}
结果是输出 1 2 就退出了整个while循环
但是如果使用continue
while(x++ < 10)
{
if(x == 3)
{
continue;
}
printf("%d\r\n", x);
}
结果是:1 2 4 5 6 7 8 9 10 可见他仅仅是不输出3,因为他结束了本次循环
例子2:
for (i=0;i<10;i++)
{
if (i==6) continue;/*如果i==6则不再执行下面的if语句,而是直接进行下一轮循环*/
if (i==7) break;/*如果i==7,则不再执行剩余的循环,直接退出for循环去执行下面的printf();*/
}
printf("break");
3.return和 break区别
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
public
class
Loop {
public
static
void
main(String[] args) {
for
(
int
i=
0
;i<
3
;i++){
for
(
int
j=
0
;j<
3
;j++){
System.out.println(
"测试i="
+i+
" 测试j="
+j);
// if(i==2) return;//测试return
if
(i==
2
)
break
;
//测试break
System.out.println(
"j"
+j+
"循环结束。。。"
);
}
}
System.out.println(
"i循环结束。。。"
);
}
}
|
exit(1):非正常运行导致退出程序;
return():返回函数,若在主函数中,则会退出函数并返回一值。
详细说:
1. return返回函数值,是关键字; exit 是一个函数。
2. return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示结束一个进程 。
3. return是函数的退出(返回);exit是进程的退出。
4. return是C语言提供的,exit是操作系统提供的(或者函数库中给出的)。
5. return用于结束一个函数的执行,将函数的执行信息传出个其他调用函数使用;exit函数是退出应用程序,删除进程使用的内存空间,并将应用程序的一个状态返回给OS,这个状态标识了应用程序的一些运行信息,这个信息和机器和操作系统有关,一般是 0 为正常退出, 非0 为非正常退出。
6. 非主函数中调用return和exit效果很明显,但是在main函数中调用return和exit的现象就很模糊,多数情况下现象都是一致的。