黑马程序员—程序流程控制 循环结构 for语句及练习

------- android培训java培训、期待与您交流! ----------   

class fortest // 认识for语句的详细运算过程 及实际应用练习
{
	public static void main(String[] args) 
	{
		int m=1;//don't forget!!
		for (System.out.println("a");m<3;System.out.println("c"))
		{
			System.out.println("d");
			m++;
		}

/*   输出结果为 a d c d c 可见 for的初始化表达式不一定非是基本的数据类型int
只要是合法的表达式都可以 注意如果需要多表达式 用,分隔开就行 例如 :

		for (System.out.println("a");m<3;System.out.println("c"),x++)
		for (int m=0,y=1,z=2;   m<3;   m++,y++,z++)
*/
		
		for (int y=0;y <3;y++)
		{

		}
		//也可以写成下面格式 为什下面也可以定义y 是因为上面的y只在for里有效
		
		int y=2;//不要丢!!!!
		for ( ;y<3;)
		{
			y++;
		}

/*
        无限循环的最简单表现形式:
		for ( ; ; ) {}  
			
		while (true){}

		此二者可能为简单的面试题

*/

//练习一:获取1~10的和并且打印

/*
	思路:
		0+1
		 1+2
		  3+3
		   6+4
		    10+5
			 15+6
			  21+7
			   28+8
			    36+9
				 45+10
			          //这是计算机内的计算过程 也是写代码的思路
	
*/	
//使用while语句
		//1 定义变量 用于存储不断变化的和
		int sum1=0;
		
		//2 定义变量 用于记录住(存储起来)不断变化的被加的数
		int n=1;

		//3 定义循环 重复加法的过程

		while (n<=10)//题目要求计算1~10的和 已定义变量n 所以这里应为n<=10
						 
		{
			sum1 = sum1+n;
			n++;
		}
			System.out.println("sum1="+sum1);
//一定要明确哪些语句需要参与循环,哪些不需要。直接在大括号外边打印一次就行

	
		
/* 利用for语句
		int sum=0;//sum应该定义在外边 因为是用循环来操作sum

		for ( int x=1;x<=10;x++)
		{	
		     sum =sum+x;//也可以写成老师的sum+=x;
			System.out.println("sum="+sum);
		}

		若将执行语句 System.out.println("sum="+sum);写在sum=sum+x前面的话 
		结果为45
		分析过程 提高对for循环运算步骤的认识程度 如下:

		1.经过x=1(初始化表达式 只执行一次)  -->x<=10(循环条件表达式)
		-->sum=0(执行语句)  -->sum=sum+x(下边有)=0+1=1     //一次循环结束

		2.x++=1+1=2(循环后的操作表达式)  -->x<=10(循环条件表达式)
		-->sum=1(执行语句) -->sum=sum+x=1+2=3  //x++开始执行,二次循环结束

		3.x++=2+1=3(循环后的操作表达式)-->x<=10(循环条件表达式) 
		-->sum=3(执行语句) -->sum=sum+x=3+3=6              //三次循环结束
			
		4.x++=3+1=4(循环后的操作表达式)-->x<=10(循环条件表达式)
		-->sum=6(执行语句) -->sum=sum+x=6+4=10             //三次循环结束
		  .
		  .
		  .
		  .
	   10.x++=9+1=10(循环后的操作表达式)-->x<=10(循环条件表达式)
		-->sum=45(执行语句) -->sum=sum+x=45+10=55          //十次循环结束
		 
	  //但是十次循环完成后 计算机在下一次运算时 就会将x=10 自增1 即x=11肯
	    定不会满足x<=10(循环条件表达式)的条件 即sum=55是不会被执行语句显示的
		
		只有将sum=sum+x;写在System.out.println("sum="+sum);前面 才能让第一次
		循环执行语句结果为1  10次循环后结果为55
			
			
      //注意 以上结果都是每循环一次就打印一次结果 其实一定要明确哪些语句需要
	    参与循环 哪些不需要 只有sum=sum+x 是需要不断参与循环 影响最后结果的
		而执行语句 直接在大括号外边打印一次就可以 就是最后的结果 如下:

        PS:发现一使用上箭头两次就可调出上上次的命令 次数越多就越靠前  

*/
		int sum=0;

		for ( int x=1;x<=10;x++)
		{	
		    sum+=x;
		}
			System.out.println("sum="+sum);// 结果为55
/*
总结: 其实上述就是累加思想的体现
	  原理:通过变量记录住循环操作后的结果 通过循环实现累加动作 比如一个数
		   不断地变大或者不断地变小 以及字符串的不断延长 为记录住不断变化
		   的结果 通常都视为累加
*/
// 计算1~100以内所有偶数的和  注意应该先定义什么 !!!!!!!!!!

		int sum2=0;//应该先定义sum放在外边 因为是用循环来操作sum !!!!!!!!!!!!
		for(int k=1 ;k<=100;k++)
		{
			if (k%2==0)
			{
				sum2+=k;
			}
			
		}
			System.out.println("sum2="+sum2);  

//练习二:获得1~100之间 7的倍数的个数。并打印。
  
/*	思路: 以后都得这么写
		1.通过循环的形式 先对100以内的数进行遍历(循环)
		2.在遍历的过程中 定义条件 只对7的倍数进行操作
		  //注意老师的思维很严密 在哪里干什么 而不是直接干什么 自己想写的是
		    定义7的倍数 打印(不定义条件 如何打印??) 思路想到一部分 先写下
			步骤 再考虑别的问题 (诸如本题的个数)
		3.完成前两步后 联想用正字计数的方法 因为7的倍数不确定 所以定义一个变量 
		  用来记录每一个7的倍数



	步骤:1.定义循环语句 选择for语句(与while相比 节省内存)
	       // 不能直接写使用for语句
		 2.在循环中定义一个判断 只要是7的倍数即可 使用if语句 条件是7的倍数
		   其实就是变量模以7结果为0(z%7=0)//开始写
		 3.定义一个变量 这个变量随着7的出现而自增 //重要
		
		
		
*/		
		int count=0;
		for (int z=1; z<=100 ;z++)//注意是自增++ 不是=++
		{
			if(z%7==0)/*注意 不是= 而是==(比较运算符)否则程序不会判断
					   结果是否正确*/
			{
				count++;
				//System.out.println("z="+z);
			}
				
		}
				System.out.println("count="+count);
				//直接写在外边即可  否则又会出现循环的多次显示结果
/*
总结:计数器思想(类似于累加)
	 通过一个变量记录住数据的状态变化(本题为z%7)
	 也是通过循环完成变化过程
以后遇到某一范围里符合条件的需求数量的问题时 首先要想到计数器思想
*/

		System.out.println("Hello World!");
	}
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值