从零开始学Java-循环结构

89 阅读11分钟

前言

前一篇文章中,我们讲解了java的一些基础算术运算符。经过前面几期的学习,你是不是对java产生了一定的兴趣了呢?接下来我们就要转变一下我们的学习方法了哟!我们先来总结一下:

前面学习的东西只是概念、格式的内容。只需要记忆+多练习就可以啦

从现在开始,后面的代码我们需要加入一点东西,那就是循环逻辑啦!

目录

  • 顺序结构
  • 分支结构
  • 循环结构

我们先来看第一部分:顺序结构!

顺序结构

什么是顺序结构呢?

顺序结构是java默认的执行过程,按照代码的先后顺序从上到下执行!我们来看段代码:

public static void main(String[] args) {
        // 顺序结构
        System.out.println("我是语句块1");
        System.out.println("我是语句块2");
        System.out.println("我是语句块3");
        System.out.println("我是语句块4");
    }

image.png 怎么样,是不是很好理解呢?那我们接下来加深“亿”点难度吧!

分支结构

分支结构呢又分两种,我们一起来学习吧!

if循环

if单分支

我们先来说一下if基本语法:在Java代码中,如果我们要根据某个条件来决定是否执行一段代码,就可以考虑使用if语句。if语句的基本语法是:

if(条件表达式){ 
    //满足条件时要执行的语句
}

在上面的语法中,会根据if(条件表达式)里的计算结果(true或者false).如果为true,就执行,否则就不执行。

下面我们来看一个案例:

 public static void main(String[] args) {
        // if单分支
        //需求:有一家网吧,你想进去上网,但是网吧规定18岁才能进去,小于18岁不允许进去!
        // 1.提示你输入年龄
        System.out.println("请输入你的年龄:");
        // 2.键盘录入年龄
        Scanner sc = new Scanner(System.in);
        int age = sc.nextInt();
        if(age < 18){
            System.out.println("你还满18岁不可以进去哟!");
        }
    }

下面我们来说一下单分支的执行过程:

1.首先执行关系表达式。

2.如果关系表达式的值为true就执行语句块。

3.如果关系表达式的值为false就不执行语句块。

4.继续执行后面的其他语句块。

下面我们来说一个if...else多分支!

if...else多分支

if...else...结构会根据条件表达式的结果进行判断,当表达式的结果为true,则执行语句块A;否则执行else后面的语句块B。if...else...的基本语法是:

if(条件表达式){
        //语句块A
    }else{ 
        //语句块B
}

我们来看一个案例:

// 需求:键盘录入一个整数表示身上的钱,如果大于100就去吃肯德基,如果小于100就去吃沙县小吃90。
        // 1.由键盘输入一个数字表示身上的钱。
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你身上的钱:");
        // 2.拿钱进行判断
        int money = sc.nextInt();
        if(money >= 100){
            System.out.println("我可以吃肯德基啦!");
        }else{
            System.out.println("我要去吃沙县小吃");
        }

image.png 可以看到我们输入的70不大于等于100,结果为false,所以执行语句块2。

我们来看一段进阶版的多分支吧:

// 需求:假设某电影院售卖了100张票,票的序号为1-100。其中键盘录入一个整数表示电影的序号。
        // 如果票数如果为奇数就打印坐左边,如果票数为偶数那么就打印坐右边
        // 1.键盘录入一个整数表示电影票序号
        Scanner sc = new Scanner(System.in);
        // 2.提示输入
        System.out.println("请输入你的电影票序号:");
        int ticket = sc.nextInt();
        // 3.判断只有当ticker在0-100之间,才是真实的票
        if(ticket >= 0 && ticket <= 100) {
            // 4.判断电影票是奇数还是偶数
            if (ticket % 2 == 1) {
                System.out.println("请坐左边!");
            } else {
                System.out.println("请坐右边!");
            }
        }else{
            System.out.println("你输入的不是真实的票!");
        }

这个案例就有点用到了嵌套了,首先我们先判断你输入的票是否小于等于100,如果小于等于100才会跳到里面的if进行判断,如果大于100呢就会不执行里面的if,跳出来执行外面的打印语句块!

下面我们来说一下多分支的执行过程:

1.首先执行关系表达式。

2.如果关系表达式的值为true就执行语句块A。

3.如果关系表达式的值为false就执行语句块B。

4.继续执行后面的其他语句块。

我们学习完了if的单分支和多分支,下面再来学一下if的第三种格式:嵌套吧!

if嵌套

if嵌套的基本语法:

if(条件表达式1){
   //满足条件表达式1执行的代码
}else if(条件表达式2){
    满足条件表达式2执行的代码
}else if(条件表达式3){
    满足条件表达式3执行的代码
}else{
    语句块n+1
}

下面我们来看一张执行过程:

image.png

1.首先执行关系表达式1。

2.如果表达式为true就执行语句块1,如果为false就计算表达式2的值。

3.如果表达式2的值为true就执行语句块2,如果为false就计算表达式3的值。

......

4.如果关系表达式结果都为false,那么就执行语句块n+1。

这么看是不是有点绕呢?没关系,我们用案例来实操看一下:

        // 需求:小明考试如果95-100分就奖励自行车一辆,
        // 如果是90-94分就去游乐场玩一天,
        // 如果是80-89分就送变形金刚一个,
        // 如果是80分以下就揍一顿。
        // 1.由键盘录入一个分数
        Scanner sc = new Scanner(System.in);
        // 2.提示输入分数
        System.out.println("请输入你的分数:");
        int score = sc.nextInt();
        if(score >= 0 && score <= 100){
            if(score >= 95 && score <= 100){
                System.out.println("奖励自行车一辆");
            }else if(score >= 90 && score <= 94){
                System.out.println("奖励游乐场一天!");
            }else if(score >= 80 && score <= 89){
                System.out.println("奖励变形金刚一个!");
            }else if (score <= 80){
                System.out.println("准备接受制裁吧!");
            }
        }else{
            System.out.println("请输入有效数字!");
        }

具体怎么实现呢?我们来看一下流程:

image.png 我们会先执行表达式1,如果表达式1成立的我们就进到里面执行表达式3,如果不成立的话直接执行表达式2。然后在表达式里面依次对键盘输入的数进行判断,如果成立的话就输出对应的语句块,如果都没有成立呢就会执行最后那个else语句,最后退出循环!

到这里我们就学完了分支结构的第一个啦。我们下面来继续学习分支结构的第二个:switch。

switch

switch的基本语法:

switch(表达式){
    case 值1:
        语句块1;
        break;
    case 值2:
        语句块2;
        break;
    case 值3:
        语句块3;
        break;
    ...
    default:
        语句块n+1;
        break;
}

下面我们来看一下格式:

  1. 表达式(要将匹配的值)取值为byte,short,int,char。
  2. case:后面跟的是要和表达式进行比较的值(被匹配的值)
  3. break:表示中断,结束的意思。
  4. default:表示所有情况都不匹配的时候就会执行里面的语句块。
  5. case后面的值只能是字面量,不能是变量
  6. case给出的值不能够出现重复

我们来说一下执行过程吧:

  1. 首先计算表达式1的值
  2. 依次和下面case的值进行比较,如果有对应的就执行里面的语句块,在执行过程中遇到break就会直接结束。
  3. 如果所有的case的值都不匹配的话就会执行default里面的语句块,然后结束整个seitch语句。

下面我们来用代码实操一个案例看看吧:

//需求:一家店里面有兰州拉面,武汉热干面,北京炸酱面,陕西油泼面
// 键盘输入你想吃的面,如果有则输出,没有的话输出吃泡面去吧。

        // 1.由键盘输入你想吃的面
        Scanner sc = new Scanner(System.in);
        // 2.提示用户输入想要吃的面
        System.out.println("请输入你想要吃的面:");
        String noodles = sc.nextLine();
        // 3.获取你输入的面进行下面的值进行比较
        switch (noodles){
            case "兰州拉面":
                System.out.println("兰州拉面来了老弟!");
                break;
            case "武汉热干面":
                System.out.println("武汉热感卖弄来了老弟!");
                break;
            case "北京炸酱面":
                System.out.println("北京炸酱面来了老弟!");
                break;
            case "陕西油泼面":
                System.out.println("陕西油泼面来了老弟!");
                break;
            default:
                System.out.println("没有,吃你的泡面去吧!");
                break;
        }

我们运行看一下:

image.png

image.png 这么说是不是就明白了呢,获取表达式的值进行匹配就可以了呢!

以上就是switch循环的知识点啦,那下面我们来学一下循环结构吧!

循环结构

什么是循环呢?

1.重复的做某件事情。

2.具有明确的开始和停止标记。

循环的分类:

  • for循环
  • while循环
  • do...while循环

其中呀最常用的就是for循环和while循环,至于do...shile循环几乎不用,所以只需要了解就可以啦!

for循环

for循环的格式:

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

// 打印10次HelloWorld
for(int i = 1;i<= 10 ;i++){
    System.out.println("HelloWorld"),
}

我们来解释一下这段代码:
    变量i表示初始位置从1开始,然后会执行条件判断语句,
    如果成立的话就打印出一次HelloWorld,
    然后在执行条件控制语句++,执行完后继续返回执行条件判断语句,
    直到条件判断语句不成立就退出循环体。

下面我们来说明一下执行过程吧:

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

edf33f2dc0f6b9facf4a8bf11d2f13c.png 我们再来看一段案例:

/* 需求:在实际开发中,重复需要执行的代码,会选择循环结构。
例如玩游戏的时候网不好那么是不是会经常断线重连呢?
那么断线重连这个业务就需要我们用到循环重复执行啦。
假设现在公司要求断线重连的业务逻辑最多只写五次,怎么实现呢?
 */
// 分析:循环次数为5次,开始条件1次,结束条件5.

for(int i = 1;i <= 5; i++){
    System.out.println("第" + i + "执行断线重连业务逻辑");
}

image.png 我们运行可以看到确实打印了5次,如果想要打印6次怎么办呢?很简单,只需要把条件判断语句的值改一下就可以啦,怎么样是不是很简单呢!

while循环

while循环的格式:

初始化语句;
while(条件判断语句){
    循环体语句;
    条件控制语句;
}
这里可以看到循环结构和for循环是类似的。

while循环执行过程其实和for是一样的呢 image.png 下面我们来看一段案例:

public static void main(String[] args) {
    // 需求:利用while循环打印10
    int i = 1;
    while(i <= 10){
        System.out.println(i);
        i++;
    }
}

到这里while循环就讲完啦,我们接下来看一下for和while循环有什么相同点和不同点:

相同点:运算规则都是一样的。

不同点:for循环中,控制循环的变量,在循环结束后就不能在被访问到了。

而while循环中,控制循环的变量,在循环结束后该变量还可以继续使用。

那我们什么时候用for,什么时候用while呢?

其实我们可以判断条件,当知道循环次数或者循环范围的时候就用for循环,而不知道循环次数和范围,只知道循环结束条件的时候我们就可以用到while循环啦!

do...while循环

do...while循环我们在后面用的比较少,所以只需要了解一下就可以啦!

do...while循环的格式:

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

image.png

以上就是三种循环结构体知识点啦,有什么不懂的可以评论在评论区,都会一一解答哟,我们下期再见!!!

==最后非常感谢您的阅读,也希望能得到您的反馈  ==