循环次数不确定要终止循环的方式
2016-03-05 20:52
375 查看
循环次数不确定要终止循环的方式
[b]概述[/b]Java编程中,语句执行的基本流程有:顺序执行、分支执行、循环执行,其中在执行循环的过程中,我们总是希望我们能知道循环执行的次数,但是很不幸,在很多的情况下我们是无法预料或者至少我们很难算出循环到底执行多少次,那么此时我们就要考虑怎么去设立循环终止的条件呢?是不是就没有任何的办法了呢?答案是否定的,我们可以通过两种方法解决:设置flag标志位;使用break和continue关键字。
[b]使用flag标志位[/b]
使用flag标志位是一种有效的编程技巧,基本的思路是:当得到循环结束的要求时,通过翻转flag标志位的值控制循环的结束。其中flag标志位我们采用的数据类型是
boolen,在前面的博客中,详细的说明了
boolen类型究竟使用多少个字节存储,因为Java出于安全性的考虑,所以不允许程序员操作内存,所以我们根本无法得知究竟是怎么存储
boolen类型的。用下面的程序解释flag标志位的使用方法。
/** * @author junpengzhu * @version 1.0 * function: 利用flag标志位控制循环的退出,从控制台顺序输入两个整数,要求第一个数必须必第二个数大,如果满足,结束程序,如果不满足,重新输入,直到满足条件结束循环 */ inport java.util.*; class TestFlag{ public static void main(String[] args){ boolen flag = true ; Scanner scanner = new Scanner(System.in); System.out.println("请输入第一个整数:"); int before = scanner.nextInt(); System.out.println("请输入第二个整数:"); int after = scanner.nextInt(); while(flag){ if (before > after) { System.out.println("第一个数:"+before+"大于第二个数:"+after); flag = false ; }else{ System.out.println("第一个数比第二个数小"); } } } }
说明:上面的程序并无任何实际的意义,只是为了说明flag标志位的使用而故意设计的不合理程序。
[b]使用break、continue关键字控制循环[/b]
在整个Java语言中,只有两处能使用break的语句,分别是switch语句中控制开关,循环语句中控制循环,而continue语句在整个Java语言中只有在循环中能使用,任何其他的语句中使用break、continue都是不正确的方式。熟悉C语言或者C++语言的来更加应注意,在Java中,break、continue比C和C++中的功能更加的强大。
break用法:
* 基本用法: break和C语言中一样,结束整个循环。
* 高级用法: 和label配合使用,结束指定层的循环,例如:
/** * @suthor junpengzhu * @version 1.0 * function:使用break和标签的结合停止指定层的循环 */ class TestLoop{ public static void main(String[] args){ outer: for(int i = 0 ; i < 3 ; i++){ inner: for(int j = 0 ; j < 2 ; j++){ System.out.println("Hello,World!"); break outer; } } } }
代码的执行结果:
Hello,World! //输出一次Hello,World!
continue用法:
* 基本用法: continue和C语言中一样,结束本次循环,继续下一次循环。
* 高级用法: 和label配合使用,技术指定循环的本次循环,继续下一次,例如:
/** * @author junpengzhu * @version 1.0 * function:使用break和标签的结合停止指定层的循环 */ class TestLoop{ public static void main(String[] args){ outer: for(int i = 0 ; i < 3 ; i++){ inner: for(int j = 0 ; j < 2 ; j++){ System.out.println("Hello,World!"); continue outer; } } } }
代码的执行结果:
Hello,World! Hello,World! Hello,World!
[b]总结[/b]
目前在我的编程经验中,我认为这两种基本的控制循环的方法都是极其优秀的方法,并且需要提醒的是对于
for循环实际上只是
while循环的语法糖,在很多的编程语言中,实际上只需要
while就足够了,但是往往很多的编程人员喜欢用语法糖(说罢了语法糖就是用来让编程人员觉得更加舒服的写法),我不推荐使用,我喜欢使用原生的
while循环,再加上这两种控制循环结束的方法,图灵模型已经证明这是完备的。
[b]联系我[/b]
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树