循环结构:重复执行某段代码片段
1.1.循环结构
1,while循环
/** * 1,while循环 */ public static void method1() { /* while循环 首先先判断条件表达式的结果 如果为true 则执行循环体; 然后再次判断条件表达式的结果 如果为true再次执行循环体 否则循环结束; */ //while有可能一次都不执行 当一次判断结果为false //count是控制循环次数的变量 /* int count = 0; while (count < 5) { //循环体 System.out.println("hello world" + count); count++;//count = count + 1; }*/ int count = 5; while (count > 0) { System.out.println("hello world" + count); count--;//等价于 count = count-1; } System.out.println("end"); }
练习
/** * 动态录入班级人数和学员成绩,计算班级学员的平均成绩 */ public static void exercise1() { Scanner sc = new Scanner(System.in); System.out.println("请录入班级人数 "); int stuNum = sc.nextInt(); //控制循环次数的变量 int count = 1; //sum 是总成绩的变量 double sum = 0; while (count <= stuNum) { System.out.println("请录入" + count + "个学生的成绩"); int score = sc.nextInt(); //double score = sc.nextDouble(); //累加 sum = sum + score;// sum += score; //自增 count++; } System.out.println("sum: " + sum); System.out.println("avg: " + (sum / stuNum)); }
-
do...while循环
-
是while循环的变体,区别在于至少执行一次
-
/** * do...while循环 */ public static void method2() { int count = 0; //第一次执行循环体的时候 不做判断 直接执行;do..while至少执行一次循环 do { //循环体 System.out.println("hello " + count); count++; } while (count < 5); }
练习题
public static void exercise4() { int year = 2014; double sale = 10; do { sale = sale * 1.45; year++; System.out.println("sale: " + sale); System.out.println("year: " + year); } while (sale < 100); } public static void exercise3() { Scanner sc = new Scanner(System.in); System.out.println("请录入班级人数 "); int stuNum = sc.nextInt(); //控制循环次数的变量 int count = 1; //sum 是总成绩的变量 double sum = 0; do { System.out.println("请录入" + count + "个学生的成绩"); int score = sc.nextInt(); //double score = sc.nextDouble(); //成绩进行累加 sum = sum + score;// sum += score; //自增 count++; } while (count <= stuNum); System.out.println("sum: " + sum); System.out.println("avg: " + (sum / stuNum)); }
变量的作用域问题
/** * 变量作用域 */ private static void method3() { //变量的作用域:在哪些地方能访问一个变量 int num = 10; System.out.println(num); if (10 > 2) { //只需要看这个变量声明所在的 花括号 不能出花括号 int score = 23; System.out.println(score); } int count = 0; int num2 = 0; while (count < 5) { num2 = 10; } System.out.println(num2); System.out.println(num); }
3,for循环
public static void method1() { int count = 0; while (count < 5) { System.out.println("hello " + count); count++; } /* 1, int i = 0 初始化语句 只执行一次 2, i < 5 条件判断语句 如果结果是true 执行循环体 否则 循环结束 3, i++ 自增语句执行完后;再次回到步骤2; */ for (int i = 0; i < 5; i++) { System.out.println("hello " + i); } }
设递增步长
/** * 递增步长自定义 */ public static void method2() { for (int i = 0; i < 5; i += 2) { System.out.println("hello " + i); } }
练习
/** * 1-100 所有偶数 的和 */ public static void method3() { int sum = 0; //奇数 for (int i = 1; i <= 100; i += 2) { sum += i; } //偶数 /* for (int i = 2; i <= 100; i += 2) { sum += i; }*/ /*for (int i = 2; i <= 100; i++) { if (i % 2 == 0) { sum = sum + i;//sum +=i; } }*/ System.out.println("sum: " + sum); }
依次递减
/** * 递减变化 */ public static void method4() { for (int i = 5; i > 0; i--) { System.out.println("hello " + i); } }
变体写法
/** * 2种死循环写法 */ public static void method5() { /*for (; ; ) { System.out.println("hello"); }*/ for (int i = 0; ; i++) { System.out.println("hello" + i); } }
练习
/** * for:常用于循环次数可知 * while:常用于循环次数未知 */ public static void exercise1() { Scanner sc = new Scanner(System.in); System.out.println("请录入班级人数 "); int stuNum = sc.nextInt(); //sum 是总成绩的变量 double sum = 0; for (int i = 1; i <= stuNum; i++) { System.out.println("请录入" + i + "个学生的成绩"); int score = sc.nextInt(); //double score = sc.nextDouble(); //成绩进行累加 sum = sum + score;// sum += score; } System.out.println("sum: " + sum); System.out.println("avg: " + (sum / stuNum)); }
循环嵌套
public static void method7() { int i = 0; while (i < 5) { System.out.println("外层循环 " + i); i++; /*int j = 0; while (j < 3) { System.out.println(" 内层循环 " + j); j++; }*/ for (int j = 0; j < 3; j++) { System.out.println(" 内层循环 " + j); } } } /** * 循环嵌套 */ private static void method6() { for (int i = 0; i < 5; i++) { System.out.println("外层循环 " + i); for (int j = 0; j < 3; j++) { System.out.println(" 内层循环 " + j); } } }
练习
/** * 打印出所有的 "水仙花数" * 所谓 "水仙花数"是指一个三位数,其各位数字立方和等于该数本身。 * 例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。 */ public static void exercise2() { // 100 - 999 for (int i = 100; i <= 999; i++) { int bai = i / 100; int shi = i / 10 % 10; int ge = i % 10; int sum = (int) (Math.pow(bai, 3) + Math.pow(shi, 3) + Math.pow(ge, 3)); if (sum == i) { System.out.println(i + "是水仙花数"); } } }
1.2.2个关键字
1,break关键字
public static void method9() { for (int i = 0; i < 5; i++) { if (i == 2) { // break 终止紧跟着的循环 break; } System.out.println("外层循环 " + i); for (int j = 0; j < 3; j++) { System.out.println(" 内层循环 " + j); } } } /** * 1 break 一旦出现在循环体中,表示终止循环 */ public static void method8() { for (int i = 0; i < 10; i++) { if (i == 3) { // break一旦执行 直接终止break紧跟着的循环 break; } System.out.println("java " + i); } System.out.println("end"); }
2,continue关键字
/** * */ public static void method11() { for (int i = 0; i < 5; i++) { if (i == 1) { continue; } System.out.println("外层循环 " + i); for (int j = 0; j < 3; j++) { System.out.println(" 内层循环 " + j); } } } public static void method10() { for (int i = 0; i < 10; i++) { if (i == 3) { // continue终止紧跟着的循环的 某一次循环;continue下面的代码不再执行 continue; } System.out.println("java " + i); } System.out.println("end"); }