第六章

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第六章相关的知识,希望对你有一定的参考价值。

 第六章

for语法:

for(表达式①;表达式②;表达式③){

       //④循环操作

}

表达式含义:

表达式1:赋值语句, 它用来给循环变量赋初值 例如:int i = 1;

表达式2:循环条件,一个关系表达式, 它决定什么时候退出循环 例如:i < 5;

表达式3:变量迭代  例如: i++ 三个表达式均可省略,但分号不能省!!!!! 

 

执行过程:

1.表达式1

2.判断表达式2,如果为true,执行循环操作,否则退出循环,第三步不执行

3.循环操作执行完毕后,执行表达式3(迭代部分),改变循环变量值

4.依次重复步骤2~3,直到退出循环    

 表达式2满足条件   

  if(表达式①;表达式②;④循环操作){  

 表达式③   

  }    

执行流程:①---->②---->③---->④ --------------------------------------------------------------------------

注意事项:

for(;i<10;i++){    

  System.out.println("这是 "+i);

}

编译错误:

变量 i 没有初始化

--------------------------------------------------------------------------

for(int i=0;;i++){  

     System.out.println("这是 "+i);

}

编译正确,但是缺少

循环条件,造成死循环

--------------------------------------------------------------------------

for(int i=0;i<10;){      

  System.out.println("这是 "+i);   

   }

i++;

编译通过,但是循环变量的值无变化, 造成死循环

省略表达式3,在循环体内应设法改 变循环变量的值以结束循环

--------------------------------------------------------------------------

for(;;){  

    System.out.println("这是测试");

}

表达式全省略,无条件判断,循环变量无改变,

应在循环体内设法结束循环;

否则会造成死循环

--------------------------------------------------------------------------

//break是结束整个循环体,continue是结束单次循环

比方说:

while(x++ < 10){

    if(x == 3){     

    break;   

  }    

System.out.println("值:" + x);

}

结果是输出  1 2   就退出了整个while循环

但是如果使用continue

while(x++ < 10){    

if(x == 3){       

  continue;    

}    

System.out.println("值:"+ x);

}

结果是:1 2 4 5 6 7 8 9 10  可见他仅仅是不输出3,因为他结束了本次循环

当循环执行到break语句时,就退出整个循环,然后执行循环外的语句  改变程序控制流。

当循环语句执行到continue时,当次循环结束,重新开始下一轮循环。如果已经是最后一轮循环了,那么这是的continue就与break效果一样了。

 

到目前为止所学的循环结构有哪些?

语法区别:

 while                       | do-while                     |    for

while循环:              | do{                               | 

for(初始化;条件;迭代){

while(<条件>){                                    |                 //循环体  

|  //循环体    

    //循环体                                        |                            }while(<条件>);   |  }   

                                 |                      |

需要多次重复执行一个或多个任务的问题考虑使用循环来解决 无论哪一种循环结构,都有4个必不可少的部分:初始部分、循环条件、循环体、迭代部分

执行顺序:

while 循环:先判断,再执行

do-while循环:先执行,再判断

for循环:先判断,再执行

适用情况: 循环次数确定的情况,通常选用for循环 循环次数不确定的情况,通常选用while或do-while循环

 

 

for案例:

/**

*计算1到100的和

*/

public class Summation {

    public static void main(String[] args) {   

      int sum = 0; //声明变量sum存放计算的和,赋初值为0   

      for(int i=1;i<=100;i++)      

       sum +=i;//等价于语句sum=sum+score  

       System.out.println("sum="+sum);    

}

}

/**

* 使用for 循环

 * 输入学生的5们功课,查询该学生的总成绩和平均分数

 */ import java.util.Scanner;

public class AverageScores {

    public static void main(String[] args) {     

    int score;    //声明一个变量,取名为score,用来接收学生的成绩值    

     int sum= 0;    //声明一个变量,取名sum,用来存储学生的成绩和                  

      double avg =0.0;    //声明一个double类型的变量,用来接收计算出来的学生的平均分  

       Scanner sc = new Scanner(System.in);    //获取键盘输入    

     System.out.println("请输入学生的姓名:");   

      String name = sc.next();    //将获取的输入赋值给一个String类型的name变量      

   int i= 0;        //声明一个int类型的变量,赋初始值为0     

    for(;i<5;i++){    //循环5次录入成绩            

System.out.println("请输入5门功课的第"+(i+1)+"门的成绩:");     

        score = sc.nextInt();    //录入成绩       

      sum += score;      //等价于语句

sum=sum+score;           

  System.out.println(name+"的前"+(i+1)+"门功课的成绩和是:"+sum);         }      

      System.out.println(name+"的总成绩是:"+sum);   

      avg = sum/5;    //计算平均成绩        

System.out.println(name+"的平均分是:"+avg);

    }

 

变量为汉字

  /**   

   * 使用for 循环     

* 输入学生的5们功课,查询该学生的总成绩和平均分数  

    */ import java.util.Scanner;

public class 求学生的平均成绩 {    

public static void main(String[] args) {   

      int 单科成绩;     

    int 总成绩= 0;       

  double 平均分 =0;    

     Scanner 键盘输入 = new Scanner(System.in);       

  System.out.println("请输入学生的姓名:");        

String 学生姓名 = 键盘输入.next();        

int i= 0;     

    for(;i<5;i++){     

        System.out.println("请输入5门功课的第"+(i+1)+"门的成绩:");     

        单科成绩 = 键盘输入.nextInt();   

          总成绩 += 单科成绩;        

     System.out.println(学生姓名+"的前"+(i+1)+"门功课的成绩和是:"+总成绩);     

    }      

      System.out.println(学生姓名+"的总成绩是:"+总成绩);  

       平均分 = 总成绩/5;      

   System.out.println(学生姓名+"的平均分是:"+平均分);   

  }

}

 

以上是关于第六章的主要内容,如果未能解决你的问题,请参考以下文章

软件构造 第六章第三节 面向可维护的构造技术

《新下级学》第六章第五第六节

《新下级学》第六章第五第六节

第六章第二节Lua脚本框架

软件构造第六章第三节 面向可维护的构造技术

第六章第三节Lua脚本demo