Java编程练习Day05
循环控制练习02
foreach循环优于for循环
本实例使用foreach循环分别遍历集合对象与数组,并把元素值输出到控制台
foreach循环是for循环的一种简写格式
只用于遍历集合或者数组,语法格式如下:
for(Type e : collections)
{
//对变量e的使用
}
参数说明:
1.e:其类型Type是集合或数组中元素值的类型,该参数是集合或数组collections中的一个元素
2.collections:要遍历的集合或数组,也可以是迭代器。
import java.util.ArrayList;
import java.util.List;
public class UseForeach {
public static void main(String[] args) {
List<String> list = new ArrayList<String>(); //创建list集合
list.add("abc");//初始化list集合
list.add("def");
list.add("hij");
list.add("klm");
list.add("nop");
list.add("qrs");
list.add("tuv");
list.add("wxy");
list.add("z");
System.out.println("foreach遍历集合:\n\t");
for(String string : list){//遍历list集合
System.out.println(string);//输出集合的元素值
}
System.out.println();
String[] strs = new String[list.size()];//创建数组
list.toArray(strs);
System.out.println("foreach遍历集合:\n\t");
for(String string : strs){//遍历数组
System.out.println(string);//输出数组元素值
}
}
}
运行结果如下:
终止循环体
本实例使用break语句实现中断循环
public class BreakCyc {
public static void main(String[] args) {
System.out.println("------------中断单词循环的例子------------------");
//创建数组
String[] array = new String[]{"白鹭","丹顶鹤","黄鹂","鹦鹉","乌鸦","喜鹊"};
System.out.println("在你发现一只黄鹂之前,告诉我都有什么鸟");
for(String str : array){//遍历数组
if(str.equals("黄鹂")) {//如果遇到黄鹂
break;//中断循环
}else{//否则输出数组元素
System.out.println(str);
}
}
System.out.println("---------------------中断双层循环的例子------------------");
//创建成绩数组
int[][] myScores = new int[][]{{67,78,63,22,66},{55,68,78,95,44},{95,97,93,93,81}};
System.out.println("宝宝这次的考试成绩:\n数学\t语文\t英语\t美术\t历史\t");
No1:for(int[] is : myScores){//遍历成绩表格
for(int i : is){
System.out.println(i+"\t");//输出成绩
if(i < 60){//如果中途遇到不及格的,立刻中断所有输出
System.out.println("\n等等,"+i+"分是什么?这个为什么不及格?");
break No1;
}
}
System.out.println();
}
}
}
运行结果如下:
循环体的过滤器
某些条件下需要放弃部分循环处理,而不是整个循环体。
Java提供了continue语句来实现这一功能。
continue可以放弃本次循环体的剩余代码,不执行他们而开始下一轮的循环。
本实例利用continue语句实现循环过滤器,可以过滤“黄鹂”字符串,并作出相应的处理
但是放弃continue语句之后的所有代码
public class CycFilter {
public static void main(String[] args) {
//创建数组
String[] array = new String[]{"白鹭","丹顶鹤","黄鹂","鹦鹉","乌鸦","喜鹊"};
System.out.println("在我的花园里面有很多鸟类,但是最近来了几只黄鹂,请把他们抓走。");
int birdCount = 0 ;
for (String str : array) {
if (str.equals("黄鹂")) {
System.out.println("发现一只黄鹂,已经抓到笼子里");
birdCount++;
continue;
}
System.out.println("搜索鸟类,发现了:" + str);
}
System.out.println("一共捉到了"+birdCount+"只黄鹂");
}
}
运行结果如下:
循环的极限
本实例将介绍一个Java语言中很难发现的导致程序死循环的实例
实例将测试使用int整数类型作为循环索引变量,也是循环控制变量,用他来控制循环的次数
但是当这个程序的条件是索引小于等于变量类型的最大值时会发生什么呢?
你可能会认为这个循环至少会执行50次并输出计数结果
然而这个程序的运行结果会导致死循环
这是因为控制条件是索引小于等于整数类型的最大值,当整数类型达到最大值再累加1会回到整数
类型的最小值,所以他永远不可能大于end变量
这样就导致了程序的死循环
所以,在程序开发的过程中,要控制循环变量的取值范围
public class CycuTmost {
public static void main(String[] args) {
int end = Integer.MAX_VALUE;//定义循环终止数
int start = end - 50;//定义循环起始数
int count = 0;//定义循环计数器
for(int i =start ;i <= end ; i++){
count++;
}
//输出循环计数器
System.out.println("本次循环次数为"+count);
}
}
运行结果如下: