还在用if硬写?利用循环+break优化重复代码的3个实战案例
一.无限循环和跳转控制1.无限循环无限循环 for(;;){ System.out.println(学习); } while(true){ System.out.println(学习); }2.跳转控制continue跳过本次循环继续执行下次循环break结束并跳出整个循环二.多重循环控制重点将一个循环放在另一个循环体内形成嵌套循环其中forwhiledo...while均可以作为外层循环和内层循环。【一般嵌套不超过3层】实际上嵌套循环就是把内层循环当作外层循环的循环体。当只有内层循环的循环条件为false时才会完全跳出内层循环结束外层循环的当次循环开始下一次的循环。设外层循环次数为m次内层循环为n次则内层循环体实际上需要执行m*n次。三.代码练习1.统计3个班的成绩情况每个班有5名同学求出各个班的平均分和所有班级的平均分2.统计3个班及格人数每个班有5名同学import java.util.Scanner; public class MulForExercise01 { //编写一个main 方法 public static void main(String[] args) { //统计 3 个班成绩情况每个班有 5 名同学 //求出各个班的平均分和所有班级的平均分[学生的成绩从键盘输入]。 //统计三个班及格人数每个班有 5 名同学。 // //思路分析: //化繁为简 //(1) 先计算一个班 , 5 个学生的成绩和平均分 , 使用 for //1.1 创建 Scanner 对象然后接收用户输入 //1.2 得到该班级的平均分 , 定义一个 doubel sum 把该班级 5 个学生的成绩累积 //(2) 统计 3 个班(每个班 5 个学生) 平均分 //(3) 所有班级的平均分 //3.1 定义一个变量double totalScore 累积所有学生的成绩 //3.2 当多重循环结束后totalScore / (3 * 5) //(4) 统计三个班及格人数 //4.1 定义变量 int passNum 0; 当有一个学生成绩60, passNum //4.2 如果 60 passNum //(5) 可以优化[效率可读性, 结构] //创建 Scanner 对象 Scanner myScanner new Scanner(System.in); double totalScore 0; //累积所有学生的成绩 int passNum 0; //累积 及格人数 int classNum 3; //班级个数 int stuNum 5;//学生个数 for( int i 1; i classNum; i) {//i 表示班级 double sum 0; //一个班级的总分 for( int j 1; j stuNum; j) {//j 表示学生 System.out.println(请数第i个班的第j个学生的成绩); double score myScanner.nextDouble(); //当有一个学生成绩60, passNum if(score 60) { passNum; } sum score; //累积 System.out.println(成绩为 score); } //因为 sum 是 5 个学生的总成绩 System.out.println(sum sum 平均分 (sum / stuNum)); //把 sum 累积到 totalScore totalScore sum; } System.out.println(三个班总分 totalScore 平均分 totalScore / (classNum*stuNum)); System.out.println(及格人数 passNum); } }3.打印九九乘法表public class MultiplicationTable { public static void main(String[] args) { // 外层循环控制行数1-9 for (int i 1; i 9; i) { // 内层循环控制每行的列数 for (int j 1; j i; j) { // 格式化输出乘法式 //%d 输出整数 ij //%2d 输出宽度为2的整数右对齐 //使用printf进行格式化输出而非printlnprintln不支持格式化参数 System.out.printf(%d×%d%2d , j, i, i * j); } // 每行结束换行 System.out.println(); } } }

相关新闻