编程思想

编程思想实例1

打印1~100之间所有是9的倍数的整数,统计个数及总合

  • 化繁为简
    1. 完成输出1~100的值
    2. 输出的过程中,进行过滤,只输出9的倍数,i % 9 ==0
    3. 统计个数,定义一个变量int count = 0,条件满足时,count++
    4. 总和,定义一个变量 int sum = 0;条件满足时,sum += i
  • 先死后活
    1. 为了适应更好的需求,把范围的开始的值和结束的值,做出变量。开始的1和结束的100,让我们可以更好的更改需求
    2. 更进一步,把9的倍数也做成变量 int t = 9
int count = 0;
int sum = 0;
int start = 1;
int end = 100;
int t = 9;
for(int i = start;i <= end;i++){
    if(i % t == 0){
        System.out.println(i);
        count++;
        sum += i;
    }
}
多重循环控制

嵌套循环

  • 一般使用两层,最多不要超过3层,可读性很差。

嵌套循环就是把内层循环当成外层循环的循环体。只有内层循环循环完毕,循环条件为false时,才会跳出内层循环,结束外层循环的当次循环,开启下一次的循环。

循环代码练习1

  1. 统计3个班成绩情况,每个班有5名同学

  2. 求出每个班的平均分和所有班级的平均分【学生的成绩从键盘输入】

  3. 统计三个班及格人数,每个班有5名同学

  • 思路分析

    • 化繁为简:将复杂的需求,拆解成简单的需求,逐步完成
      1. 先计算一个班级,5个学生的成绩和平均分
        • 创建Scanner对象接收用户输入
        • 得到该班的平均分,定义一个double sum把该班5个学生的成绩累计
      2. 统计三个班(每班5个学生)的平均分
        • 定义一个变量,double totalScore累计所有学生的成绩
        • 当多重循环结束后,totalScore/(3*5)
      3. 统计三个班几个人数
        • 定义变量 int passNum = 0;当有一个学生成绩>=60时,passNum++
  • 先死后活:先考虑固定的值,然后转成可以灵活变化的值

    • 把定义的常量分别定义一个新的变量来接收。
    • 然后可根据业务需求,变换变量即可。
Scanner myScanner = new Scanner(System.in);                   //1.1
int sumAll = 0;                                               //3.4
int passNum = 0;                                              //4.2   
for(j = 1; j <=3 ; j++){                                      //3.2
    int sum = 0;   //计算一个班级的总分,如果外层循环重置,总分归0     //2.2
    for(int i = 1;i <= 5;i++){                                //1.2
        System.out.println("请输入第" + i + "个学生的成绩");      //1.3
        //然后定义一个成绩接收键盘输入并输出                         //1.4
        double score = myScanner.nextDouble();                //1.5
        System.out.println("第" + i + "个学生的成绩为" + score); //1.6
        if(score >= 60){                                      //4.2
            passNum++;
        }
        sum += score;                                         //2.3
    }//平均分应该在一个班级循环完毕后输出,要在循环前定义,在循环内取值    //2.1
    System.out.println(j+"班平均分为" + sum / 5);               //2.4
    sumAll += sum;                                            //3.5
}
//第一个班级完成,现在统计三个班,套一层循环                          //3.1
//所有班级的平均分,应该在外层循环完之后输出,所以在外层循环前定义        //3.3
System.out.println("总平均分为"+sumAll/15);                     //3.6
//判断及格人数,外层循环完毕后输出,循环开始前定义,跟在分数后面判断       //4.1
System.out.println("及格人数为"+passNum);                       //4.3

循环代码练习2

打印空心金字塔

韩顺平p137

动手写!!!

好记性不如烂笔头