5. 多重循环和程序调试
5.1 多重循环
-
多重循环是指循环中嵌套循环结构
-
多重循环注意事项
- 各种循环可以互相嵌套
- 一般不要超过三层嵌套
- 外层循环变化一次,内层循环要全部执行完
-
代码
**需求1:**使用循环嵌套输出10*10的矩形
public static void demo() { for (int i = 0; i < 10; i++) { System.out.print("第" + (i + 1) + "行: "); for (int j = 0; j < 10; j++) { System.out.print("*"); } System.out.println(""); } }
**需求2:**输出n层的直角三角形
public static void demo() { Scanner sc = new Scanner(System.in); System.out.println("输入直角三角形的高: "); int n = sc.nextInt(); if (n < 0) { System.out.println("三角形的层高不能为负数!"); // 终止正在执行的函数,return后面的语句不会再执行 return; } // 外层循环控制行 for (int i = 0; i < n; i++) { // 内层循环控制*个数 for (int j = 0; j <= i; j++) { System.out.print("*"); } // 输出*结束,换行 System.out.println(); } }
**需求3:**输出倒n层的直角三角形
public static void demo() { Scanner sc = new Scanner(System.in); System.out.println("输入直角三角形的高: "); int n = sc.nextInt(); for (int i = 0; i < n; i++) { for (int j = 0; j < n - i; j++) { System.out.print("*"); } System.out.println(); } }
**需求4:**输出n层靠右直角三角形
public static void demo() { Scanner sc = new Scanner(System.in); System.out.println("输入直角三角形的高: "); int n = sc.nextInt(); // 行 for (int i = 0; i < n; i++) { // 左边空格 for (int k = 0; k < n - i - 1; k++) { System.out.print(" "); } // * for (int j = 0; j <= i; j++) { System.out.print("*"); } // 换行 System.out.println(); } }
**需求5:**输出n层平行四边形
public static void demo() { Scanner sc = new Scanner(System.in); System.out.println("输入平行四边形的高: "); int n = sc.nextInt(); // 行 for (int i = 0; i < n; i++) { // 空格 for (int j = 0; j < n - i - 1; j++) { System.out.print(" "); } // * for (int j = 0; j < n; j++) { System.out.print("*"); } // 换行 System.out.println(); } }
**需求6:**输出n层等腰三角形
public static void demo() { Scanner sc = new Scanner(System.in); System.out.println("输入三角形的高: "); int n = sc.nextInt(); for (int i = 0; i < n; i++) { // 空格 for (int j = 0; j < n - i - 1; j++) { System.out.print(" "); } // * for (int j = 0; j < 2 * i + 1; j++) { System.out.print("*"); } // 换行 System.out.println(); } }
需求7: 9*9乘法表
public static void task() { for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { System.out.print(i + " × " + j + " = " + (i * j) + "\t"); } System.out.println(); } }
**需求8:**输出数字金字塔
public static void task() { Scanner sc = new Scanner(System.in); System.out.println("输入一个整数(1-9):"); int n = sc.nextInt(); for (int i = 0; i < n; i++) { // 空格 for (int j = 0; j < n - i - 1; j++) { System.out.print(" "); } // 数字 for (int j = 0; j < 2 * i + 1; j++) { System.out.print(i + 1); } // 换行 System.out.println(); } }
**需求9:**n层菱形
public static void task() { Scanner sc = new Scanner(System.in); System.out.println("输入菱形的高:"); int h = sc.nextInt(); if (h <= 0) { System.out.println("菱形的高是正整数!"); return; } // 如果是偶数,层高+1 h = h % 2 == 0 ? ++h : h; // 获得当前菱形的上半部分的高 int up = h / 2 + 1; int down = up - 1; System.out.printf("up=%d,down=%d\n", up, down); // 输出上半部分 for (int i = 0; i < up; i++) { // 空格 for (int j = 0; j < up - i - 1; j++) { System.out.print(" "); } // 输出* for (int j = 0; j < 2 * i + 1; j++) { if (j == 0 || j == 2 * i) { System.out.print("*"); } else { System.out.print(" "); } } // 换行 System.out.println(); } // 输出下半部分 for (int i = 0; i < down; i++) { // 空格 for (int j = 0; j <= i; j++) { System.out.print(" "); } // 输出* for (int j = 0; j < 2 * down - 2 * i - 1; j++) { System.out.print("*"); } System.out.println(); } }
**需求10:**一只公鸡值5元,一只母鸡值3元,而1元可买3只小鸡。现有100元钱,把钱正好花完,正好买到100只鸡。请问可买公鸡、母鸡、小鸡各几只
public static void task() { // 公鸡的个数 for (int i = 0; i < 21; i++) { // 母鸡的个数 for (int j = 0; j < 34; j++) { // 小鸡的个数 /* for (int k = 0; k < 101; k++) { // 3只小鸡1元,一只小鸡是 1/3.0元,k只是 k/3.0元 if (i * 5 + 3 * j + k / 3.0 == 100 && (i + k + j) == 100) { System.out.println("公鸡有:" + i + "只,母鸡有:" + j + "只,小鸡有:" + k); } }*/ int k = 100 - j - i; if (i * 5 + 3 * j + k / 3.0 == 100) { System.out.println("公鸡有:" + i + "只,母鸡有:" + j + "只,小鸡有:" + k); } } } }
**需求11:**鸡兔同笼问题:上面数,有35个头,从下面数,有94只脚。问笼中各有多少只鸡和兔?
public static void task() { for (int i = 0; i <= 35; i++) { /*for (int j = 0; j <= 94; j++) { if (i + j == 35 && i * 2 + j * 4 == 94) { System.out.println("鸡有" + i + "只,兔有" + j + "只"); } }*/ int j = 35 - i; if (i * 2 + j * 4 == 94) { System.out.println("鸡有" + i + "只,兔有" + j +