`
编程足球
  • 浏览: 257052 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

while 和 for 不完全相同

    博客分类:
  • java
 
阅读更多
1. for和while的语法如下:
 for(initialize;test;increment){
     statement;
 }
 
 initialize
 while(test){
     statement;
     increment;
 }



2. 一般情况下for 和 while 的效果是一样的.
private static void forSameWhile() {
		int sum = 0;
		for (int i = 0; i < 10; sum += i++) {
		}
		System.out.println("sum1 : " + sum);
		
		
		// 使用while 实现和for一样的功能
		sum = 0;
		int i = 0;
		while(i < 10){
			sum += i++;// 等于for语句中的
		}
		System.out.println("sum1 : " + sum);
	}



3. 但是如果语句中包含continue,则有可能存在如下情况(注意,很容易死循环)
/**
	 * @Description : 当语句中包含有continue 的时候 for 和while 就不一样了
	 *  			  for语句continue后多执行了increment 一次
	 * @version ; 1.0
	 */
	   
	private static void forNotSameWhile() {
		int sum = 0;
		for (int i = 0; i < 10; sum += i++) {// continue 后一样可以执行
			i++;
			if (i % 3 == 0) {
				continue;
			}
		}
		System.out.println("sum2 : " + sum);
		
		
		sum = 0;int i = 0;
		while(i < 10){
			i++; // 不加会死循环
			if (i % 3 == 0) {
				continue;
			}
			sum += i++; // 如果被continue 则下面的语句无法执行 increment
		}
		System.out.println("sum2 : " + sum);
	}



4. 但是如果添加上try catch finally的话,有可能又一样了
	/**
	 * @Description : 如果系统使用finally的话,使用continue while 和for保持一致
	 */
	   
	private static void forSameWhileUseFinallyAndContinue() {
		int sum = 0;
		for (int i = 0; i < 10; sum += i++) {// continue 后一样可以执行
			if (i % 3 == 0) {
				continue;
			}
		}
		System.out.println("sum3 : " + sum);
		
		
		sum = 0;int i = 0;
		while(i < 10){
			try {
				if (i % 3 == 0) {
					continue;
				}
			} finally{
				sum += i++; // 无论是否有continue都会执行
			}
		}
		System.out.println("sum3 : " + sum);
	}


5. 如果使用try catch finally ,碰到break,则又有问题:
/**
	 * @author ; rj
	 * @Description : 但是使用了try finally 后如果使用break,则while又会比for多执行一次increment
	 */
	private static void forNotSameWhileUserFinallyAndBreak() {
		int sum = 0;
		for (int i = 0; i < 10; sum += i++) {// continue 后一样可以执行
			if (i % 9 == 8) {
				break;
			}
		}
		System.out.println("sum4 : " + sum);
		
		
		sum = 0;int i = 0;
		while(i < 10){
			try {
				if (i % 9 == 8) {
					break;
				}
			} finally{
				sum += i++; // 无论是否有continue都会执行
			}
		}
		System.out.println("sum4 : " + sum);
	}



所有说 for 和while并不是完全可以相互替换的,
导致不同的原因就是:increment 语句块是否有被执行.
分享到:
评论

相关推荐

    C语言习题五(循环).pdf

    C语言的循环结构主要有三种:for循环、while循环和do...while循环。这些循环结构的共同目的是使一段代码可以重复执行多次,直到满足特定条件为止。以下是对文件内容中出现的相关知识点进行详细说明: 1. while循环...

    虚拟仪器 labview 结构与属性控制PPT学习教案.pptx

    LabVIEW在While循环中也可引入移位寄存器(Shift Register)和框架隧道(Loop Tunnel),与For循环中用法完全相同。 4. While循环的使用: While循环可以用于解决各种问题,例如求N!。While循环的特点是,具有自动...

    c语言题目 循环结构程序设计习题答案.

    - 选项B中的描述并不准确,while和do-while循环的控制条件在本质上是相同的,只是执行顺序不同。 - 选项C中提到的“do-while允许从外部转到循环体内”并不是其特有的特性。 - 选项D描述的是do-while循环体的限制...

    谭浩强 C语言 PDF 06

    ; i=1;...通过选择合适的循环类型(while、do-while或for),以及灵活地运用break和continue语句,可以使我们的程序更加高效和简洁。掌握好这些循环控制结构,对于成为一名优秀的C语言程序员至关重要。

    An introduction to Python for scientific computing

    Python支持常见的控制流结构,如`if`语句、`for`循环和`while`循环。这些语句对于实现复杂逻辑至关重要,尤其在科学计算中常常需要根据条件执行不同的操作或重复执行某个过程直到满足特定条件为止。 #### 函数 ...

    2022年自考04747Java语言程序设计一简答题全集.doc

    java 中的分支语句包括 if 语句和 switch 语句,循环语句包括 while 语句、do-while 语句和 for 语句。 在 Java 语言中,++x 和 x++ 是两种不同的表达式。++x 表达式在使用 x 之前,先使 x 的值加 1,而 x++ 表达式...

    plsql用户完全手册(整理版)

    - 条件语句(IF-THEN-ELSIF-ELSE)和循环(WHILE、FOR、LOOP)用于根据条件执行不同的代码路径或重复执行某段代码。 - CASE语句提供更灵活的条件判断。 - DECLARE-EXCEPTION部分用于声明自定义异常,可以捕获并...

    华中科技大学C语言实验与课程设计上机实验报告汇总(1-8全部).docx

    的源程序,要求分别用while和do-while语句替换for语句,并将输入改为“整数S”,输出改为“满足n!&gt;=s的最小整数n”。实验结果表明,通过修改和替换源程序,可以实现相同的功能,但使用不同的循环结构。 分析及改正 ...

    第5章.pptx

    - 完全可以替代`while`循环。 - **注意事项**: - 表达式1、2、3均可省略,但分号不能省略。 - 通常用于已知循环次数的情况。 ### 循环结构之间的比较 - `while`与`do...while`的主要区别在于执行顺序不同,`do....

    VB语言程序设计循环结构程序设计PPT教案学习.pptx

    内外循环之间必须完全包含,不能交错,且循环变量应避免使用相同的名字以防止混淆。 例如,一个简单的双重循环应用可以用来打印二维数组或者创建特定的图形。在VB中,通过`For`和`Next`语句可以实现多重循环,用`...

    C# for CSDN 乱七八糟的看不懂

    定义 数组是一种排列有序的数据结构,包含于数组中的变量被称为数组的元素, 它们都有相同的类型。 数组声明 int [] array1 = new int[5]; int [,,] array3 = new int[10,20,30]; int [] array1 = new int[] {1,2,4}...

    Java基础知识

    - `do-while`循环保证至少执行一次,而`while`循环可能完全不执行。 - **1.10.10 for语句** - `for`循环是一种常用的循环结构。 - **1.10.11 for语句的执行逻辑** - `for`循环提供了初始化、条件判断和更新循环...

    C语言入门——循环结构练习(内附答案)

    本篇文章将通过两个实例来讲解C语言中的循环结构,包括`while`循环和`for`循环的使用。 首先,我们来看第一个练习题目,它的目标是找到2到2000之间的所有完全数。完全数是指所有不同正因数之和等于其本身的正整数。...

    计算机C语言考试判断题.doc

    而函数strcmp用于比较两个字符串,当两个字符串完全相同时返回0。 总的来说,C语言结合了高级语言的抽象能力和低级语言的直接性,提供了丰富的控制结构、数据类型和输入/输出机制。理解并熟练掌握这些基本概念和...

    蓝桥杯的比赛经验心得蓝桥杯简介比赛流程蓝桥杯比赛全程4小时,往年是上午9点到13点 试题形式题目分为结果填空题和程序设计大题

    循环,学会循环的开始和终结的判断,一般使用比较多的就是 for 和 while 。 函数,明白函数的返回类型和参数传递其次,学习基础算法,数据结构和数学知识,排序,这个在比赛中直接使用 sort() 就可以了,还要掌握...

    JAVA复习材料

    Java的语句结构包括顺序结构、选择结构(`if`, `switch`)和循环结构(`while`, `do-while`, `for`)。`do-while`循环与`while`循环的区别在于,`do-while`循环至少会执行一次,即使初始条件不满足,而`while`循环...

    《JAVA语言程序设计》期末考试试题及答案6(应考必备题库).doc

    - 覆盖(Overriding):发生在子类覆盖父类的方法,方法签名完全相同,且子类方法的访问级别不能比父类的更低。 - 重载(Overloading):发生在同一个类中的多个方法具有相同的名字但参数列表不同,或者是返回类型...

    初中信息技术知识竞赛试题 06 9 doc

    1. INT函数和FIX函数:INT函数和FIX函数在某些编程语言中都是用来处理数值的,但它们并不完全相同。INT函数通常用于向下取整,它会将任何浮点数向下舍入到最接近的整数,舍去小数部分。而FIX函数则是去掉数字的小数...

    大连理工大学《数据挖掘》20秋在线作业2答案.docx.docx

    A、B、C选项描述正确,D选项错误,因为编程语言中的异常是程序运行时发生的错误,而错误可能发生在编译阶段,两者不完全相同。 3. 以下哪个关键字不是异常处理语句的关键字?() 异常处理的关键字包括try、except和...

Global site tag (gtag.js) - Google Analytics