Flyinsky's Codes
1207 字
6 分钟
Java中的循环与分支
2024-09-23

Java中的循环与分支#

循环结构

  1. for 循环
  2. 增强的 for 循环(for-each 循环)
  3. while 循环
  4. do-while 循环

分支结构

  1. if-语句
  2. if-else 语句
  3. if-else if-else 语句
  4. switch 语句

循环结构#

  1. for 循环#

    • 用于在知道循环次数的情况下重复执行某段代码。
    • 语法:
      for (初始化; 条件; 更新) {
          // 循环体
      }
    • 示例:
      for (int i = 0; i < 10; i++) {
          System.out.println(i);
      }
  2. 增强的 for 循环(for-each 循环)#

    • 用于遍历数组或集合。
    • 语法:
      for (元素类型 元素 : 集合) {
          // 循环体
      }
    • 示例:
      int[] numbers = {1, 2, 3, 4, 5};
      for (int number : numbers) {
          System.out.println(number);
      }
  3. while 循环#

    • 用于在条件为真时重复执行某段代码。
    • 语法:
      while (条件) {
          // 循环体
      }
    • 示例:
      int i = 0;
      while (i < 10) {
          System.out.println(i);
          i++;
      }
  4. do-while 循环#

    • 类似于 while 循环,但至少执行一次循环体。
    • 语法:
      do {
          // 循环体
      } while (条件);
    • 示例:
      int i = 0;
      do {
          System.out.println(i);
          i++;
      } while (i < 10);

分支结构#

  1. if 语句#

    • 根据条件执行代码块。
    • 语法:
      if (条件) {
          // 代码块
      }
    • 示例:
      int number = 10;
      if (number > 0) {
          System.out.println("Number is positive.");
      }
  2. if-else 语句#

    • 根据条件在两个代码块之间选择执行。
    • 语法:
      if (条件) {
          // 代码块1
      } else {
          // 代码块2
      }
    • 示例:
      int number = -10;
      if (number > 0) {
          System.out.println("Number is positive.");
      } else {
          System.out.println("Number is negative or zero.");
      }
  3. if-else if-else 语句#

    • 根据多个条件选择执行代码块。
    • 语法:
      if (条件1) {
          // 代码块1
      } else if (条件2) {
          // 代码块2
      } else {
          // 代码块3
      }
    • 示例:
      int number = 0;
      if (number > 0) {
          System.out.println("Number is positive.");
      } else if (number < 0) {
          System.out.println("Number is negative.");
      } else {
          System.out.println("Number is zero.");
      }
  4. switch 语句#

    • 根据变量的值执行不同的代码块。
    • 语法:
      switch (变量) {
          case 值1:
              // 代码块1
              break;
          case 值2:
              // 代码块2
              break;
          // 更多 case
          default:
              // 默认代码块
      }
    • 示例:
      int day = 3;
      switch (day) {
          case 1:
              System.out.println("Monday");
              break;
          case 2:
              System.out.println("Tuesday");
              break;
          case 3:
              System.out.println("Wednesday");
              break;
          default:
              System.out.println("Other day");
      }

习题#

习题1:根据分数给出成绩评价#

public String getLevelStringByScore(int score) {
    if (score > 100 || score < 0) return "非法成绩"; //非法成绩判断
    if (score >= 90) {
        return "优秀"; //优秀 90-100
    } else if (score >= 80) {
        return "良好";//良好 80-89
    } else if (score >= 60) {
        return "合格"; //合格 60-79
    } else {
        return "不合格"; //不合格 0-59
    }
}

for each遍历分数数组

int[] scores = {71,89,67,53,78,64,92,56,74,85}; //分数样例
for (int i : scores) System.out.println(i+"对应的等级是:"+WORK1.getLevelStringByScore(i));

习题2:根据月份返回季节#

public String getSeasonNameByMonth(int month) {
    if (month > 12 || month < 1) return "非法季节"; //非法季节判断
    switch (month) {
        case 3:
        case 4:
        case 5:
            return "春季"; // 3-5范围的处理
        case 6:
        case 7:
        case 8:
            return "夏季"; // 6-8 范围的处理
        case 9:
        case 10:
        case 11:
            return "秋季"; //9-11范围的处理
        default:
            return "冬季"; //剩下1,2,12为冬季

    }
}

习题3:细菌分裂问题#

public int cellDivision(int generation){
    if(generation < 1) return 0;//小于一代为0
    if(generation == 1) return 1; else return cellDivision(generation - 1 ) * 2;
    //若为第一代 则返回1 若超过一代 则递归上一代的菌群数量 并乘2
}

习题4:斐波那契数列#

public int fbnq(int n){
    if(n < 1 ) return 0; //第0个或负数个返回0
    if( n == 1 || n == 2) return 1; else return fbnq(n-1) + fbnq(n-2);
    //因递归涉及前两个元素 先做好第1,2个元素的判断均为1 从第三个开始 递归前两个值并求和
}

习题4:冒泡排序#

由小到大:#

/*
* 由小到大
* */
    public int[] BubbleSortArray(int[] toBeSorted) {
        int length = toBeSorted.length;
        for (int i = 0; i < length; i++) {
            for (int j = i + 1; j < length; j++) {
                if (toBeSorted[j] < toBeSorted[i]) {
                    int temp = toBeSorted[j];
                    toBeSorted[j] = toBeSorted[i];
                    toBeSorted[i] = temp;
                }
                //从第一个元素遍历到最后一个 每一个遍历到的元素都和后面的每一个其他元素做比较 碰到小者进行交换
            }
        }
        return toBeSorted;
    }

由大到小:#

/*
 * 由大到小
 *
 * */
public int[] BubbleSortArrayReverse(int[] toBeSorted) {
    int length = toBeSorted.length;
    for (int i = 0; i < length; i++) {
        for (int j = i + 1; j < length; j++) {
            if (toBeSorted[j] > toBeSorted[i]) {
                int temp = toBeSorted[j];
                toBeSorted[j] = toBeSorted[i];
                toBeSorted[i] = temp;
            }
            //从第一个元素遍历到最后一个 每一个遍历到的元素都和后面的每一个其他元素做比较 碰到大者进行交换

        }
    }
    return toBeSorted;
}

总结#

  • 循环结构forwhiledo-while 和增强的 for 循环用于重复执行代码。
  • 分支结构ifif-elseif-else if-elseswitch 语句用于根据条件执行不同的代码块。

理解这些基本结构是编写高效和可维护Java代码的基础。