新手入门Java 循环结构(代码实操版,有练习)

发布时间:2024年01月05日

第四章 循环结构

课前回顾

1.选择结构都有哪几种?

基本if选择结构、if-else选择结构、嵌套if-else选择结构、多重if-else选择结构、switch选择结构

2.描述逻辑短路

逻辑与短路:在使用逻辑与衔接的多个条件中,如果其中一个条件为假,那么该条件之后的所有条件均得不到执行,从而形成逻辑与短路

逻辑或短路:在使用逻辑与衔接的多个条件中,如果其中一个条件为真,那么该条件之后的所有条件均得不到执行,从而形成逻辑或短路

3.switch选择结构支持哪些数据类型?有无注意事项?

byte int short char String Enum Byte integer Short

需要注意的是,switch选择结构如果使用String,则需要满足JDK必须在JDK 7及以上

第一节 程序调试

1.什么是程序调试?

当程序出现问题时,我们希望程序能够暂停下来,然后通过我们操作使代码逐行执行,观察整个过程中变量的变化是否按照我们设计程序的思维变化,从而找问题并解决问题,这个过程称之为程序调试

2.为什么需要程序调试?

人无完人,考虑问题不可能面面俱到,尤其是在编写复杂程序的时候,如果程序运行出了问题,定位问题就是关键了,要定位问题就需要使用程序调试

3.如何进行程序调试?

首先在有效的代码上下断点

然后以DEBUG模式启动程序

程序启动后,通过操作使程序代码逐行执行,观察变量的值的变化,从而找出问题并解决问题

4.程序调试演示

在这里插入图片描述

鼠标移到最左边,左键设置断点

在这里插入图片描述

右键空白处点击“Debug”运行,然后按F8逐行执行

这里简述操作,不详述

第二节 循环结构

1.什么是循环?

同样的事情反复做多次

2.为什么要使用循环?

思考如下代码存在什么问题?

public class Example1{
    
    public static void main(String[] args){
        System.out.println("Hello World");//1
        System.out.println("Hello World");//2
        System.out.println("Hello World");//3
        System.out.println("Hello World");//4
        System.out.println("Hello World");//5
        System.out.println("Hello World");//6
        System.out.println("Hello World");//7
        System.out.println("Hello World");//8
        System.out.println("Hello World");//9
        System.out.println("Hello World");//10
    }
}

重复的编码出现多次,在java中,这样的情况我们称之为代码冗余。那么如何减少这种重复的冗余代码呢?这就需要使用循环结构了

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

对比之前的代码,冗余部分已经完全被去掉了,但实现的功能却完全是一样的

3.循环三要素

定义循环变量并赋值

循环条件

循环变量的更新

第三节 while循环

1.语法

while(循环条件){
    //循环条件
}

2.执行流程图

在这里插入图片描述

3.案例

打印0~9之间的所有整数

4.代码实现

/**
 *打印0~9之间的所有整数
 *
 */
public class Example3 {

    public static void main(String[] args){
        //1.定义循环变量并赋值
        int i = 0;
        //2.添加循环条件
        while(i < 10){
            System.out.println(i);
            //3.循环变量更新
            ++i;
        }
    }
}

演示while循环执行过程

断点调试

5.总结

while循环的特征就是先判断,后执行。如果一开始条件就不满足,那么while循环可能一次也不执行

练习

1.在控制台输出100以内的能够被3整除的所有整数

/**
 * 1.在控制台输出100以内的能够被3整除的所有整数
 *
 */
public class Exercise1 {

    public static void main(String[] args){
        int i = 0;
        while(i < 100){
            if(i % 3 == 0){
                System.out.println(i);
            }
            i++;
        }
    }
}

2.水仙花数是指一个3位数,它每位上的数字的3次幂之和等于它本身(例如:1的三次方+5的三次方+3的三次方=153),

水仙花数的取值范围在100~1000之间。请设计一道程序,求出所有的水仙花数并在控制台打印出来

/**
 * 2.水仙花数是指一个3位数,它每位上的数字的3次幂之和等于它本身(例如:1的三次方+5的三次方+3的三次方=153),
 * 水仙花数的取值范围在100~1000之间。请设计一道程序,求出所有的水仙花数并在控制台打印出来
 *
 */
public class Exercise2 {

    public static void main(String[] args){
        int i = 100;
        while(i < 1000){
            int t = i;
            int ge = t % 10;
            t /= 10;
            int shi = t % 10;
            t /= 10;
            int bai = t;
            if(i == ge*ge*ge +shi*shi*shi +bai*bai*bai){
                System.out.println(i);
            }
            i++;
        }
    }
}

第四节 do-while循环

1.语法

do{
    //循环操作
} while(循环条件);

2.执行流程图

在这里插入图片描述

3.案例

从控制台录入学生的成绩并计算总成绩,输入0时退出

4.代码实现

import java.util.Scanner;

/**
 *从控制台录入学生的成绩并计算总成绩,输入0时退出
 *
 */
public class Example4 {

    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int totalScore = 0;//默认总成绩为0
        int score;//定义循环变量,但是没有赋初值
        do{
            System.out.println("请输入成绩:");
            score = sc.nextInt();//第一次执行时,对循环变量score赋上初始值
            totalScore += score;
        } while(score != 0);
        System.out.println("总成绩为:" + totalScore);
    }
}

演示do-while循环执行过程

断点调试

练习

从控制台输入一个数字,如果该数字不能被7整除,则重新输入,直到输入的数字能够被7整除为止。

import java.util.Scanner;

/**
 *从控制台输入一个数字,如果该数字不能被7整除,则重新输入,直到输入的数字能够被7整除为止。
 *
 */
public class Exercise3 {

    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        int number;
        do {
            System.out.println("请输入一个整数:");
            number = sc.nextInt();
        } while(number % 7 != 0);
        System.out.println(number);
    }
}

5.总结

do-while循环的特征就是先执行,后判断。do-while循环最少会执行一次

第五节 for循环

1.语法

for(定义循环变量;循环条件;循环变量的更新){
    //循环操作
}

2.执行流程图

在这里插入图片描述

3.案例

求1~10的累加和

4.代码实现

/**
 * 求1~10的累加和
 *
 */
public class Example5 {

    public static void main(String[] args){
        int sum = 0;//和,默认为0
        for(int i = 1;i <= 10;i++){//变量i的作用范围仅限于整个for循环结构
            sum += i;
        }
        System.out.println(sum);
    }
}

演示for循环执行过程

断点调试

练习

1.求6的阶乘

/**
 *1.求6的阶乘
 *
 */
public class Exercise4 {

    public static void main(String[] args){
        int result = 1;
        for(int i = 1;i <= 6;i++){
            result *= i;
        }
        System.out.println(result);
    }
}

2.求100以内既能被2整除又能被9整除的所有整数和

/**
 * 2.求100以内既能被2整除又能被9整除的所有整数和
 *
 */
public class Exercise5 {

    public static void main(String[] args){
        int sum = 0;
        for(int i = 0;i < 100;i++){
            if(i % 2 ==0 && i % 9 ==0){
                sum += i;
            }
        }
        System.out.println(sum);
    }
}

5.总结

for循环的特征是先判断,后执行;如果一开始条件就不满足,那么for循环可能一次也不执行。循环次数确定的情况下,通常使用for循环;循环次数不确定的情况下通常使用while循环和do-while循环

第六节 流程控制

1.break关键字

应用场景

break只能应用于while循环、do-while循环、for循环和switch选择结构

作用

break 应用在循环结构中时,表示终止break所在的循环,执行循环下面的代码,通常与if选择结构配合使用

break 应用在switch选择结构时,表示终止break所在的switch选择结构

案例

获取一个10以内的随机整数,然后从控制台输入一个整数,如果输入的整数与随机整数不相等,则重新输入,直到输入的整数与随机整数相等为止

代码实现

import java.util.Scanner;

/**
 * 获取一个10以内的随机整数,然后从控制台输入一个整数,如果输入的整数与随机整数不相等,则重新输入,直到输入的整数与随机整数相等为止
 * 
 */
public class Example6 {
    
    public static void main(String[] args){
        //Math.random(); 表示的意思是随机获取一个0~1之间的随机浮点数,能够取到0,但是取不到1
        //[0,1)
        double random = Math.random();// [0,1)的浮点数
        int number = (int)(random * 10);// [0,10)的整数
        								//如果要取[10,20)的整数,则(int)(random * 10 + 10);
        Scanner sc = new Scanner(System.in);
        int inputNumber;
        //do{
        //    System.out.println("请输入一个整数");
        //    inputNumber = sc.nextInt();
        //} while(inputNumber != number);
        while(true){//死循环
            System.out.println("请输入一个整数");
            inputNumber = sc.nextInt();
            if(inputNumber == number){
                break;//循环中使用break表示终止break所在的循环
            }
        }
    }
}

练习

从控制台输入一个数字,判断该数字是否是素数(素数的特征:只能被1和本身整数,如素数3 只能被1和3整除)。要求使用break实现

import java.util.Scanner;

/**
 *从控制台输入一个数字,判断该数字是否是素数(素数的特征:只能被1和本身整数,如素数3 只能被1和3整除)。
 * 要求使用break实现
 *
 */
public class Exercise6 {

    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数:");
        int number = sc.nextInt();
        boolean isPrime = true; //任何数都默认为素数
        for(int i = 2;i < number;i++){
            //只要2~number-1的范围内,任意一个数能够被number整除,则说明该数不是素数
            if(number % i == 0){
                isPrime = false;
                break;
            }
        }
        if(isPrime){
            System.out.println(number + "是素数");
        }else{
            System.out.println(number + "是和数");
        }
    }
}

2.continue关键字

应用场景

continue只能应用在循环结构中(while循环、do-while循环和for循环)

作用

表示跳过本次循环,进入下一次循环,通常与if选择结构配合使用

案例

打印1~10之间的所有偶数

代码实现

/**
 * 打印1~10之间的所有偶数
 *
 */
public class Exercise7 {

    public static void main(String[] args){
        for(int i = 1; i <= 10; i++){
            if(i % 2 == 1){
                continue;//当i是奇数时,跳过本次循环,直接进入下一次循环
            }
            System.out.println(i);
        }
    }
}

练习

从控制台录入1位学生的成绩,如果成绩低于60分,则将输入的成绩加5分,直到成绩及格为止。要求使用continue实现。

import java.util.Scanner;

/**
 * 从控制台录入1位学生的成绩,如果成绩低于60分,则将输入的成绩加5分,直到成绩及格为止。要求使用continue实现。
 *
 */
public class Exercise8 {

    public static void main(String[] args){
        int score;
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入学生的成绩:");
        score = sc.nextInt();
        if(score < 60){
            while(true){
                score +=5;
                if(score < 60)continue;//其实这行代码有没有都无所谓
                else break;//这里必须设置一个循环终止条件
            }
        }
    }
}
a.util.Scanner;

/**
 * 从控制台录入1位学生的成绩,如果成绩低于60分,则将输入的成绩加5分,直到成绩及格为止。要求使用continue实现。
 *
 */
public class Exercise8 {

    public static void main(String[] args){
        int score;
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入学生的成绩:");
        score = sc.nextInt();
        if(score < 60){
            while(true){
                score +=5;
                if(score < 60)continue;//其实这行代码有没有都无所谓
                else break;//这里必须设置一个循环终止条件
            }
        }
    }
}
文章来源:https://blog.csdn.net/2301_80477286/article/details/135356278
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。