编程思想实例1
打印1~100之间所有是9的倍数的整数,统计个数及总合
- 化繁为简
- 完成输出1~100的值
- 输出的过程中,进行过滤,只输出9的倍数,i % 9 ==0
- 统计个数,定义一个变量int count = 0,条件满足时,count++
- 总和,定义一个变量 int sum = 0;条件满足时,sum += i
- 先死后活
- 为了适应更好的需求,把范围的开始的值和结束的值,做出变量。开始的1和结束的100,让我们可以更好的更改需求
- 更进一步,把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
-
统计3个班成绩情况,每个班有5名同学
-
求出每个班的平均分和所有班级的平均分【学生的成绩从键盘输入】
-
统计三个班及格人数,每个班有5名同学
-
思路分析
- 化繁为简:将复杂的需求,拆解成简单的需求,逐步完成
- 先计算一个班级,5个学生的成绩和平均分
- 创建Scanner对象接收用户输入
- 得到该班的平均分,定义一个double sum把该班5个学生的成绩累计
- 统计三个班(每班5个学生)的平均分
- 定义一个变量,double totalScore累计所有学生的成绩
- 当多重循环结束后,totalScore/(3*5)
- 统计三个班几个人数
- 定义变量 int passNum = 0;当有一个学生成绩>=60时,passNum++
- 先计算一个班级,5个学生的成绩和平均分
- 化繁为简:将复杂的需求,拆解成简单的需求,逐步完成
-
先死后活:先考虑固定的值,然后转成可以灵活变化的值
- 把定义的常量分别定义一个新的变量来接收。
- 然后可根据业务需求,变换变量即可。
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
动手写!!!好记性不如烂笔头
6091ab5c296d 10 月前
c91fe5662d13 10 月前