读书人

黑马软件工程师程序流程控制 循环结

发布时间: 2013-01-28 11:49:56 作者: rapoo

黑马程序员—程序流程控制 循环结构 for语句练习
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应该定义在外边 因为是用循环来操作sumfor ( 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!");}}

?

?

读书人网 >编程

热点推荐