循环之循环的跳转——continue语句

循环是为了提高效率代码的可读性

但是一个工作很好的循环体在某些条件下要放弃本次循环。

循环之循环的跳转——continue语句

本文出现的概念有:

continue中的标号    标号由合法标识符和“:”组成。如:outer:                                                                                                           
标识符 java中包、类、方法、参数、变量的名字可以由任意顺序的英文字母、数字、下划线(_)或美元符($)组成,但是标识符不能以数字开头,且标识符不能是关键字。
语法:

continue 标号;

其中标号是可选参数         


  

不带标号跳转:

如果执行不带标号的continue语句,则结束本次循环,跳过循环体中剩下的没有被执行的语句,根据循环的条件来判断是否执行下一次循环,或者结束循环。如果是for循环,还要先执行表达式3,改变循环控制变量的值。                        例题:实现输出一百以内能被7整除的所有数,使用continue语句   来过滤其他数字                                                                                                                                       

public class Test {
	  public static void main(String[] args) {
	        for(int i=0;i<100;i++) {
	        	if(i%7!=0) {
	        		continue;
	        	}
	        	System.out.println(i+"、");
	        }
	    }
}

带标号跳转:

如果执行带标号的continue语句,则不是跳过当前循环语句的一次循环,而是跳过标号指定的循环语句的一次循环。因为标号是用来指定循环语句的,所以标号定义在循环语句之前。带标号的循环语句经常用在多层循环之中。      

例题:使用for循环和带标号的continue语句输出九九乘法表

public class Test {
	public static void main(String[] args) {
		outer: for (int i = 1; i < 10; i++) {
			for (int j = 1; j < 10; j++) {
				if (j > i) {
					System.out.println();// 换行
					continue outer;// 跳过标号指定的循环,放弃不需要的乘数
				}
				String str = j + "*" + i + "=" + j * i;
				System.out.print(str + "\t");// 使用制表符格式化输出
			}
		}
	}
}



拓展:

于无声处听惊雷

不带标号的continue语句中,有这样一句要求,如果是for循环,还要先执行表达式三,改变控制循环变量的值。这句话可能听起来比较没有什么概念,下面以一个例题来说明:

例题:用Iterater和for循环输出列表中索引为偶数的元素

于是我就想当然的写出了如下代码:

public class IteratorDemo {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		List<Integer> list = new ArrayList<Integer>();// 创建列表
		for (int i = 0; i < 10; i++) {// 向列表中增加10个元素
			list.add(i);
		}
		System.out.println("列表中的偶数序号元素:");
		boolean flag=true;
		for (Iterator<Integer> it = list.iterator(); it.hasNext();) {
			flag=!flag;
			if(flag) {
				continue;
			}
			System.out.print(it.next() + " ");
		}
	}
}

结果却是输出了列表中的所有元素,这说明continue语句没有起作用,因为在这种做法下,for循环的循环条件中没有表达式三,所以continue语句不执行了。

而题中要求的是使用for循环和Iterator来实现这个功能,因此没有办法借用Boolean型变量来完成奇偶数的分离,所以想要在这种情况下实现奇偶数分离的正确的代码是:

public class IteratorDemo {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		List<Integer> list = new ArrayList<Integer>();// 创建列表
		for (int i = 0; i < 10; i++) {// 向列表中增加10个元素
			list.add(i);
		}
		System.out.println("列表中的偶数序号元素:");
		for (Iterator<Integer> it = list.iterator(); it.hasNext(); it.next()) {
			System.out.print(it.next() + " ");
		}
	}

}



猜你喜欢

转载自blog.csdn.net/qll19970326/article/details/80037969