自学内容网 自学内容网

Java基础教程(002):Java判断和循环之循环结构(for、while、do...while)

3.4 循环结构

什么是循环?

  • 重复的做某件事
  • 具有明确的开始和停止标记。

循环的分类

  • for
  • while
  • do…while

3.4.1 for循环

格式:

for(初始化语句; 条件判断语句; 条件控制语句){
    循环体语句;
}

执行流程:

  1. 执行初始化语句
  2. 执行条件判断语句,看其结果是true还是false
    1. 如果是false,循环结束
    2. 如果是true,执行循环条件
  3. 执行条件控制语句
  4. 回到2继续执行条件判断语句

练习:打印10次Hello World

public class ForDemo1 {
    public static void main(String[] args) {
        for(int i=1; i<=10; i++){
            System.out.println("Hello World");
        }
    }
}

3.4.2 for循环练习

3.4.2.1 案例1

需求:在实际开发中,如果需要获取一个范围中的每一个数据,也会用到循环。

比如:求1-5的和。

分析:

  1. 循环1~5得到每一个数字
  2. 开始条件:1
  3. 结束条件:5

代码:

package fordemo;

/**
 * @Author: wang
 * @Create: 2024/11/17
 **/
public class ForDemoTest {
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 1; i <= 5; i++) {
            sum += i;
        }
        System.out.println(sum);
    }
}

3.4.2.2 偶数求和

需求:求1~100之间的偶数和。

代码:

package fordemo;

/**
 * @Author: wang
 * @Create: 2024/11/17
 **/
public class ForDemoTest2 {
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            // 判断是否为偶数
            if (i % 2 == 0) {
                sum += i;
            }
        }
        System.out.println(sum);
    }
}

3.4.2.3 统计满足条件的数字

需求:键盘录入两个数字,表示一个范围。统计这个范围内中,既能被3整除,又能被5整除的数字有几个。

package fordemo;

import java.util.Scanner;

/**
 * @Author: wang
 * @Create: 2024/11/17
 **/
public class ForDemoTest3 {
    public static void main(String[] args) {
        // 1、键盘录入两个数字
        Scanner sc = new Scanner(System.in);
        System.out.println("请录入一个数字表示范围的开始:");
        int start = sc.nextInt();
        System.out.println("请录入一个数字表示范围的结束:");
        int end = sc.nextInt();
        // 2、获取范围内的每一个数字
        int count = 0; // 记录符合条件的数字个数
        for (int i = start; i <= end; i++) {
            // 3、对每一个数字进行判断,统计有多少个满足要求的数字
            if(i % 3 == 0 && i % 5 == 0) {
                System.out.println(i);
                count += 1;
            }
        }
        System.out.println("满足条件的数字有【" + count + "】个");
    }
}

3.4.2 while循环

格式:

初始化语句;
while(条件判断语句){
    循环体语句;
    条件控制语句;
}

解释:

  1. 初始化语句只执行一次;
  2. 判断为true,循环继续;
  3. 判断为false,循环结束;

简单示例:利用while循环打印1~100

public class WhileDemo1 {
    public static void main(String[] args) {
        int i = 1;
        while (i<= 100) {
            System.out.println(i);
            i++;
        }
    }
}

3.4.3 for和while的对比

  • 相同点
    • 运行规则都是一样的。
  • 区别:
    • for循环中,控制循环的变量,因归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了。
    • while循环中,控制循环的变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可以继续使用。
    • for循环知道循环次数或者循环范围。
    • while循环不知道循环的次数和范围,只知道循环结束条件。

3.4.4 几个经典案例

【案例1】

求世界上最高山峰(8844430毫米),假如我有一张足够大的纸,他的厚度识0.1毫米,请问我折叠多少次,可以折成珠穆朗玛峰的高度?

/**
 * @Author: wang
 * @Create: 2024/11/17
 **/
public class WhileTest1 {
    public static void main(String[] args) {
        // 1、定义一个变量用来记录山峰的高度
        double height = 8844430;
        // 2、定义一个变量用来记录纸张的初始厚度
        double paper = 0.1;
        // 3、定义一个变量用来统计次数
        int count = 0;
        while (paper <= height) {
            // 折叠纸张
            paper = paper * 2;
            // 折叠一次,次数+1
            count++;
        }
        System.out.println(count);
    }
}

【案例2】

需求:一个整数X,如果X是一个回文数,打印true,否则返回false。

解释:回文数是指正序和倒序读都是一样的整数。例如,121是回文,123不是。

分析:把数字倒过来和原来的数字进行比较,一样的话即为true。所以关键就是如何把数字倒过来。

代码:

/**
 * @Author: wang
 * @Create: 2024/11/17
 **/
public class WhileTest2 {
    public static void main(String[] args) {
        // 核心思路:把数字倒过来跟原来的数字进行比较
        // 1、定义数字
        int x = 121;
        // 定义临时变量,记录x原来的值,用于最后进行比较
        int temp = x;
        int num = 0;
        // 2、利用循环,从右往左获取每一位数字
        while(x != 0){
            int ge = x % 10;
            // 修改一下x记录的值
            x = x / 10;
            // 把当前获取到的数字拼接到最右边
            num = num * 10 + ge;
        }
        System.out.println(num);
        System.out.println(num == temp);
    }
}

【案例3】

需求:给定两个整数,被除数和除数(都是正数,切不超过int的范围)。将两数相除,要求不使用乘法、除法和%运算符。得到商和余数。

分析:

  • 被除数 / 除数 = 商…余数
  • int a = 100;
  • int b = 90;
  • 100 - 10 = 90;
  • 90 - 10 = 80;
  • 10 -10 = 0;(余数)
  • 减的次数就是商。

代码:

/**
 * @Author: wang
 * @Create: 2024/11/17
 **/
public class WhileTest3 {
    public static void main(String[] args) {
        // 1、定义变量记录被除数
        int dividend = 100;
        // 2、定义变量记录除数
        int divisor = 9;
        // 3、定义变量统计减了多少次
        int count = 0;
        // 4、while循环
        while (dividend >= divisor){
            dividend = dividend - divisor;
            count ++;
        }
        System.out.println("商为:" + count);
        // 当循环结束之后dividend变量记录的就是余数
        System.out.println("余数为:" + dividend);
    }
}

3.4.5 do…while

格式:

初始化语句;
do{
    循环体语句;
    条件控制语句;
}while(条件判断语句);

原文地址:https://blog.csdn.net/WwLK123/article/details/143833850

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!