Java-逻辑控制语句

一、顺序结构

在Java语法中,顺序结构是一种基本的程序控制结构,用于按照代码的编写顺序依次执行语句。

顺序结构没有条件或循环的判断,它的执行是线性的,从上到下依次执行每条语句。

代码示例

public static void main(String[] args) {
        // 第一条语句
        System.out.println("这是第一条语句。");

        // 第二条语句
        System.out.println("这是第二条语句。");

        // 第三条语句
        System.out.println("这是第三条语句。");

        // ... 其他语句

        // 最后一条语句
        System.out.println("这是最后一条语句。");
    }

效果图
在这里插入图片描述

二、分支结构

2.1 if 语句

在Java语法中,if语句是一种条件控制语句,用于根据一个布尔表达式的值(true或false)来执行不同的代码分支。

以下是 if 语句的几种常见语法格式:

  1. 语法格式1:单个if语句
if (condition) {
    // 如果条件成立,执行的代码块
}
  • condition 是一个布尔表达式,它的值为true或false。

这是最基本的 if 语句格式,只包含一个 if 条件和一个执行代码块。如果条件满足(即为true),则执行代码块中的语句。

  1. 语法格式2 :if-else语句
if (condition) {
    // 如果条件成立,执行的代码块
} else {
    // 如果条件不成立,执行的代码块
}

if-else语句包含一个 if 条件和两个执行代码块,当条件满足时执行 if 代码块,否则执行 else 代码块。

代码示例1:判断奇偶数

IDEA中,代码有时会显示黄色的背景,这代表警告。
表示该区域的代码永远为 false,
代码中有个别警告没有关系。

在这里插入图片描述

public static void main (String[]args){
        int a = 10;
        if (a % 2 != 0) {//黄色背景说明是警告(代码中有个别警告没有关系),表示永远为false。
            System.out.println("奇数!");
        } else {
            System.out.println("偶数!");
        }
    }

效果图
在这里插入图片描述

  1. 语法格式3:if-else if-else语句(多重条件)
if (condition1) {
    // 如果条件1成立,执行的代码块
} else if (condition2) {
    // 如果条件2成立,执行的代码块
} else {
    // 上述条件均不成立时,执行的代码块
}

if-else if-else语句用于处理多个条件情况,可以根据不同的条件执行相应的代码块。条件会按顺序依次判断,当某个条件成立时,执行对应的代码块。如果所有条件都不成立,则执行最后的 else 代码块。

代码示例2:使用if语句来检查一个数值变量的正负性

 public static void main(String[] args) {
        int num = -1;

        if (num > 0) { // 检查num是否大于0
            System.out.println(num + "是正数。");
        } else if (num < 0) { // 如果num小于0
            System.out.println(num + "是负数。");
        } else { // 如果num等于0
            System.out.println(num + "不是正数也不是负数。");
        }
    }

效果图
在这里插入图片描述

  1. 语法格式4:嵌套 if 语句
if (condition1) {
    // 外层if代码块
    if (condition2) {
        // 内层if代码块
    }
}

在Java中,if语句可以嵌套使用。内层if语句的条件判断是在外层if语句的条件判断为true的情况下才会执行。可以根据实际需要嵌套多个if语句。

代码示例3:判断是否为偶数

public static void main(String[] args) {
        int num = 8;

        if (num % 2 == 0) { // 如果num可以被2整除
            if (num > 0) { // 如果num大于0
                System.out.println(num + "是正偶数。");
            } else if (num < 0) { // 如果num小于0
                System.out.println(num + "是负偶数。");
            } else { // 如果num等于0
                System.out.println(num + "是偶数。");
            }
        } else { // 如果num不能被2整除
            System.out.println(num + "不是偶数。");
        }
    }

效果图
在这里插入图片描述

[注意事项]

  • 分号问题
 public static void main(String[] args) {
        int num = 1;
        if (num == 2);
        {
            System.out.println("Hello");
        }
    }

效果图
在这里插入图片描述

  • 这里的 if 语句,多写了一个 分号,导致分号成为了 if 语句的语句体, 而 { } 中的代码已经成为了和一个 if 无关的代码块。

2.2 switch 语句

switch语句由一个表达式和多个case分支组成。

语法格式

switch (表达式) {
    case1:
        // 当表达式的值等于值1时执行的代码
        break;
    case2:
        // 当表达式的值等于值2时执行的代码
        break;
    case3:
        // 当表达式的值等于值3时执行的代码
        break;
    // 可以有更多的case分支
    default:
        // 当表达式的值不匹配任何case时执行的代码
}

//switch语句后面的代码

在switch语句中,break语句的作用是结束当前的case条件分支,并跳出switch语句,使程序执行流程继续到switch语句后面的代码。

流程

  1. 先计算表达式的值
  2. 和case依次比较,一旦有响应的匹配就执行该项下的语句,直到遇到break时结束
  3. 当表达式的值没有与所列项匹配时,执行default

代码示例:根据day输出星期

public static void main(String[] args) {

        int day = 8;
        
        switch (day) {
            case 1:
                System.out.println("星期一");
                break;
            case 2:
                System.out.println("星期二");
                break;
            case 3:
                System.out.println("星期三");
                break;
            case 4:
                System.out.println("星期四");
                break;
            case 5:
                System.out.println("星期五");
                break;
            case 6:
                System.out.println("星期六");
                break;
            case 7:
                System.out.println("星期日");
                break;
            default:
                System.out.println("无效的输入");
        }
    }

效果图
在这里插入图片描述

注意事项

  1. break和default都不能省略
  2. 不能有两个相同的case常量值
  3. switch的括号内只能是如下类型的表达式:
    基本类型:byte、char、short、int,注意不能是long类型
    引用类型:String常量串、枚举类型 (不能做switch的参数的数据类型: long double float boolean)

三、循环结构

3.1 while 循环

while循环是Java中的一种基本的循环结构,它的作用是在满足条件的情况下反复执行一段代码块。

语法格式

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

其中条件是一个布尔表达式,表示循环的条件。
如果条件为,则执行循环体,然后再次检查条件是否为真;
如果条件为,则终止循环,跳出while语句。

代码示例1:输出1-10之间的所有整数

public static void main (String[]args){
        int num = 1;
        while (num <= 10) {
            System.out.println(num);
            num++;
        }
    }

效果图
在这里插入图片描述

代码示例2:计算 1-100 的和

public static void main (String[]args){
        int sum = 0; // 初始化和为0
        int i = 1;   // 循环变量起始值为1

        while (i <= 100) {
            sum += i; // 将当前数加到sum中,相当于 sum = sum + i
            i++;      // 循环变量自增
        }

        System.out.println("1到100的和为:" + sum);
    }

效果图
在这里插入图片描述

代码示例3: 计算 4 的阶乘

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

效果图
在这里插入图片描述

注意事项

  • while()后面不能加分号(;)
public static void main(String[] args) {
        int num = 1;
        while (num <= 10); {
            System.out.println(num);
            num++;
        }
    }

如果加上分号,代码会一直处于运行状态,但无任何输出结果。
while 是一个空语句,实际的 { } 部分和循环无关。
此时循环条件 num <= 10 恒成立, 导致代码死循环,代码会一直运行而不会运行{}中的内容。

3.2 break

break语句在Java中用于提前结束循环。

代码示例:找到 50 -100 中第一个 6 的倍数

public static void main(String[] args) {
        int num = 50;
        while (num <= 100) {
            if (num % 6 == 0) {
                System.out.println("找到 6 的倍数:" + num);
                break;//执行到break语句,结束循环。
            }
            num++;
        }
    }

输出结果

找到 6 的倍数:54

3.3 continue

在Java中,continue语句用于跳过当前循环中剩余的代码,直接开始下一次循环。

代码示例

 public static void main(String[] args) {
        int a = 1;
        while (a <= 6) {
            if (a == 2) {
                a++;   //这里也记得a++ 否则会死循环
                continue;//结束下面的循环 执行下一次循环
            }
            System.out.println(a);
            a++;
        }
    }

效果图
在这里插入图片描述

3.4 for 循环

语法格式

for (1.初始化;2.判断条件;4.更新操作) {
     3.循环体
}
  • 1.初始化:在循环开始之前执行,用于声明和初始化循环变量初始值,只执行一次。

  • 2.判断条件:在每次迭代之前进行判断,如果条件成立,则继续执行循环体,否则跳出循环。

  • 3.循环体:循环体中包含要执行的代码块或语句,它们将被循环执行。

  • 4.更新操作:在每次迭代之后执行,用于更新循环变量的值。

执行过程
1234—>234—>234—>234—>234—>234—>…—>2为false,循环结束。
除却1只执行一次以外,其余在2为true时都执行多次。

代码示例1:输出1-10之间的所有整数

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

效果图
在这里插入图片描述

代码示例2:计算 1-100 的和

public static void main(String[] args) {
        int sum = 0;
        for (int i = 1; i <= 100 ; i++) {
            sum += i;
        }
        System.out.println("sum = "+ sum);
    }

效果图
在这里插入图片描述

代码示例3: 计算 4 的阶乘

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

效果图
在这里插入图片描述

注意事项

  • 如果for语句中什么都不写,就会进入死循环。
public static void main(String[] args) {
        int sum = 0;
        for (; ; ) {//死循环
            System.out.println("sum = "+ sum);
        }
    }

效果图:这里就会一直运行,不会停止。
在这里插入图片描述

3.5 do while 循环

先执行循环语句, 再判定循环条件,如果循环条件为真,则继续执行循环体,否则结束循环。

语法格式

do {
    // 循环体
} while (循环条件);//这里的分号一定要

代码示例:打印 0 - 5

public static void main(String[] args) {
        int i = 0;//先行后判
        do {
            System.out.println(i);
            i++;
        } while (i <= 5);
    }

效果图
在这里插入图片描述

注意: do while 循环最后的分号一定要写。

四、输入输出

4.1 输出到控制台

代码示例

public static void main(String[] args) {
        System.out.println("输出且换行");
        System.out.print("输出且不换行 ");
        System.out.printf("%s\n", "格式化输出,和C语言一样。");//%s表示以字符串类型输出
    }

效果图
在这里插入图片描述
从图中可见,第一行代码自动换行了;而第二行代码没有换行,导致第三行代码与第二行代码处于同一行。

  • println 输出的内容自带 \n
  • print 不带 \n
  • printf 的格式化输出方式和 C 语言的 printf 是基本一致的

4.2 从键盘上输入

在Java中,从键盘上输入可以使用Scanner类来实现。

代码示例

import java.util.Scanner; // 需要导入 util 包  
                          这只写一次,下面的代码默认都导入了包
                          一般情况下IEDA都会自动为我们导入包
                          如果没有导入,需要手动输入代码导入

public class Test {
public static void main(String[] args) {

        // 创建 Scanner 对象
        Scanner scanner = new Scanner(System.in);

        // 读取字符串
        System.out.print("请输入一个字符串:");
        String str = scanner.nextLine();//读取用户输入的字符串
        System.out.println("你输入的字符串是:" + str);

        // 读取整数
        System.out.print("请输入一个整数:");
        int num = scanner.nextInt();//读取用户输入的整数
        System.out.println("你输入的整数是:" + num);

        // 关闭 Scanner 对象
        scanner.close();
    }
    }

效果图
在这里插入图片描述

在上面的代码中,我们首先创建了一个 Scanner 对象并传入 System.in 来获取用户从键盘中输入的值。
然后使用 nextLine() 方法读取字符串。使用 nextInt() 方法读取整数。最后,用 .close() 关闭 Scanner 对象以释放资源。

4.2.1 next() 和 nextLine()

在 Java 中,Scanner 类提供了两种方法:next() 和 nextLine() 用于读取用户输入的字符串。

  • next() 方法:读取输入的一个单词,当遇到空格时,next() 方法会停止读取输入。
  • nextLine()方法:读取整行输入,直到遇到换行符为止。

代码示例1

        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入姓名:");
        String name = scanner.next();//next遇到空格就结束了,与nextLine()不同
        System.out.println(name);

        String name2 = scanner.next();//读取了空格后的字符串
        System.out.println(name2);

效果图:
在这里插入图片描述
第二个输入代码读取了空格后面的李四,第一个读取代码被张三后面的空格结束了。

代码示例2

 Scanner scanner = new Scanner(System.in);

        System.out.println("请输入年龄:");
        int age = scanner.nextInt();
        System.out.println(age);

        System.out.println("请输入姓名:");

        //此时,上面输完之后输入的 回车 会被下面读取到
        //就导致下面的nextLine()无法输入
        String name = scanner.nextLine();
        System.out.println(name);

效果图
在这里插入图片描述

解决方法
在第一个输入后面加一行 scanner.nextLine(); 接收一个回车键,这样下面的输入就不会接收到回车键了。

Scanner scanner = new Scanner(System.in);

        System.out.println("请输入年龄:");
        int age = scanner.nextInt();
        System.out.println(age);

        scanner.nextLine();  //接收一个回车键

        System.out.println("请输入姓名:");

        //此时,上面输完之后输入的 回车 会被下面读取到
        //就导致下面的nextLine()无法输入
        String name = scanner.nextLine();
        System.out.println(name);

效果图
在这里插入图片描述

4.2.2 hasNextInt()

代码示例

 Scanner scanner = new Scanner(System.in);

        System.out.println("请输入一个整数:");
        while (scanner.hasNextInt()) {//表示是否有下一个数,有输入就执行
            System.out.println("请输入一个整数:");
            int n = scanner.nextInt();
            System.out.println("n = " + n);  //ctrl+D 结束循环
        }

效果图
在这里插入图片描述

从代码中不难看出hasNextInt()是一个返回值为布尔类型的方法。
这个时候为了证明我们的猜想,可以按住键盘上左下角 ctrl + 单击,可以查看源代码。

在这里插入图片描述
源代码界面
在这里插入图片描述
在学习过程中我们也需要看得懂部分源代码,方便我们更好的理解和学习java。

小提示:

在IDEA中,如果代码数量过多,想要查看前面的代码,来写后面的代码时。
一直滚动鼠标会很费时间,不方便。
这时候就可以利用到一个开多窗口的功能,实现下面的效果:
在这里插入图片描述

实现方法

  1. 右键点击我们自己的.java文件。
  2. 单击Split Right

这里以我的Test .java为例

在这里插入图片描述
当然,开2个以上的窗口也是相同的操作方法。

  • 24
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 20
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月光Knight

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值