java中的循环break,如何简洁地判断是break出来的还是循环结束,或者说循环结束而不是break时做某事?

这是一段简单的“判断数组a中有没有b数字”的代码。比方说C中可以这样:#include<cstdio>int main(){ int a[3]={4,5,6}; int b=2; for(int i=0;i<3||(printf("notfound!")&&false);i++) { if(b==a[i]) { printf("found!"); break; } }}java里就不行:public class Main { public static void main(String[] args) { int a[]={4,5,6}; int b=2; for(int i=0;i<3 || (System.out.println("notfound!") && false);i++) { if(b==a[i]) System.out.println("found!"); } }}因为System.out.println("notfound!")没有返回值。有没有好的方法能像这样简洁地完成“正常退出for,而不是break时做什么操作”?

按你的要求,代码可以这样写:

public static void main(String[] args){

    int[] a = {4,5,6} ;

    int b = 2 ;

    for(int i = 0 ; i < a.length ; i++){

        if(a[i] == b){//找到了对应的元素

            System.out.println(b + "是存在于数组a中的! " + "break即将结束循环!") ;

            break ;

        }

        if(i == a.length - 1){//如果是最后一个元素,并执行到当前行,代表没有找到该元素

            System.out.println("数组a中没有 " + b + " 这个元素!for循环即将结束!!") ;

        }

    }

    System.out.println("main over") ;

}

Java中更简洁的代码可以借助函数,来完成数组中是否存在某个元素的判断,代码如下 : 

public static void main(String[] args){

    int[] a = {4,5,6} ;

    int b = 2 ;

    getIndex(a,b) ;

}

/**

 *判断指定数组中是否存在指定元素

 *arr  指定的数组

 *key 指定的元素

 *@return 当元素存在时,返回元素对应的索引值;否则返回-1;

 */

public static int getIndex(int[] arr,int key){

    //遍历数组,借助if进行判断

    for(int i = 0 ; i < arr.length ; i++){

        if(arr[i] == key){//找到了对应的元素

            return i ;

        }

    }

    //如果循环中的if没有被执行,代表没有找到指定的元素

    return -1 ;

}

下附java中break/continue/return三个关键字的用法:

    break : 结束当前循环或借助标号结束指定循环

    continue : 结束本次循环,继续下一次循环;也可以借助标号指定循环开始的位置

    return :  a.结束函数 b.结束函数并送回函数结果值.用于循环中时,也是结束函数,但因为函数中的循环依附于函数,函数结束,循环随函数一起结束.


通过该问题,可以看出可能是刚学Java的初学者,给你提几条建议 :

    Java开发规范中一对大括号{},在左边的括号前是不会回车换行的;(建议初学者养成良好的代码书写习惯,这个可以参考《阿里巴巴程序猿手册》)

    如果能挤出时间参加培训,是最好的.自学的话一方面需要严格的自律,另一方面,学的知识不是很系统,并且进度慢.

    学习一门语言,不仅要学习这门语言的语法规则,更要学习他的思想,更更重要的是总结自己学习语言的方法,将来可以用于其他语言的学习.

    望采纳!如赞同,请点赞!您的肯定是我最大的动力!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-09-08
你的表达有问题,break就是结束当前循环,不管后面还有几次没有执行;continue是跳过本次循环,不结束整个循环;不管是break还是continue,如果生效写在这两个词后面的代码都不会执行了,System.out.println("notfound!")并不是返回值错误,是不符合Java的for循环条件本回答被提问者采纳
相似回答