【0基础学Java第四课】-- 逻辑控制

4. 逻辑控制

  • 4.1 顺序结构
  • 4.2 分支结构
    • 4.2.1 if语句
      • 判断一个数字是奇数还是偶数
      • 判断一个数字是正数,负数,还是零
      • 判断一个年份是否为闰年
    • 4.2.2 switch 语句
  • 4.3 while循环
    • 打印 1 - 10 的数字
    • 计算 1 - 100 的和
    • 计算 5 的阶乘
    • 计算1!+2!+ 3!+ 4!+ 5!
  • 4.4 break
  • 4.5 continue
  • 4.6 for循环
    • 打印1-10的数字
    • 计算 1 - 100 的和
    • 计算 5 的阶乘
    • 计算 1! + 2! + 3! + 4! + 5!
  • 4.7 do while 循环
  • 4.8 输入输出
    • 4.8.1 输出到控制台
    • 4.8.2 从键盘输入

4.1 顺序结构

按照代码书写的顺序一行一行执行。

4.2 分支结构

4.2.1 if语句

  1. 语法格式1
    在这里插入图片描述

  2. 语法格式2
    在这里插入图片描述

  3. 语法格式3
    在这里插入图片描述`

判断一个数字是奇数还是偶数

import java.util.Scanner;
    public static void main3(String[] args) {

        Scanner scan = new Scanner(System.in);
        int num = scan.nextInt(); // 输入一个整数

        if (num % 2 == 0) {
            System.out.println(num+ " 是偶数");
        }else {
            System.out.println(num+ "是奇数");
        }
    }

判断一个数字是正数,负数,还是零

    public static void main4(String[] args) {
        Scanner scan = new Scanner(System.in);
        int num = scan.nextInt();

        if (num > 0) {
            System.out.println("正数");
        }else if(num < 0) {
            System.out.println("负数");
        }else {
            System.out.println("0");
        }
    }

判断一个年份是否为闰年

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int year = scan.nextInt();
        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
            System.out.println(year +"闰年");
        } else {
            System.out.println(year +"不是闰年");
        }
    }

注意

  • 代码风格(Java代码的风格走)
    在这里插入图片描述
  • 分号问题
    public static void main(String[] args) {
        int x = 20;
        if (x == 10);
        {
            System.out.println("hehe");
        } // 运行结果hehe
        //此处多写了一个 分号, 导致分号成为了 if 语句的语句体,
        // 而 { } 中的代码已经成为了和一个 if 无关的代码块.
    }

4.2.2 switch 语句

执行流程

  1. 先计算表达式的值
  2. 和case依次比较,一旦有响应的匹配就执行该项下的语句,直到遇到break时结束
  3. 当表达式的值没有与所列项匹配时,执行default
    public static void main2(String[] args) {
        int a = 1;
        //switch 参数里面不能是一个很复杂的参数
        switch (a){
            case 1:
                System.out.println("1");
                //break;
            case 2:
                System.out.println("2");
                break;
            default:
                System.out.println("sss");
                break;
        }

        String str = "abc";
        switch (str){
            case "abc":
                System.out.println("abc");
                break;
            case "124":
                System.out.println("124");
                break;
            default:
                System.out.println("输入有误");
                break;
        }

        //可以是枚举

        //面试题: 不能作为switch参数的数据类型是什么?
        // float double boolean long\
        char ch = 'a';
        switch (ch){

        }
    }

注意

  1. 多个case后的常量值不可以重复
  2. switch的括号内只能是以下类型的表达式:
  • 本类型:byte、char、short、int,注意不能是long类型
  • 引用类型:String常量串、枚举类型

4.3 while循环

基本语法格式
在这里插入图片描述

打印 1 - 10 的数字

    public static void main(String[] args) {
        //打印 1 - 10 的数字
        int a = 1;
        while(a <= 10) {
            System.out.println(a);
            a++;
        }
    }

计算 1 - 100 的和

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

计算 5 的阶乘

    public static void main(String[] args) {
        //计算 5 的阶乘
        int i = 1;
        int ret = 1;
        while(i <= 5) {
            ret *= i;
            i++;
        }
        System.out.println("5的阶乘:"+ret);
    }

计算1!+2!+ 3!+ 4!+ 5!

    public static void main(String[] args) {
        //计算1!+2!+ 3!+ 4!+ 5!
        int n = 1;
        int sum = 0;
        // 外层循环负责求阶乘的和
        while (n <= 5){
            int ret = 1;
            int i= 1;
            //里层循环负责完成求阶乘的细节
            while (i <= n) {
                ret *= i;
                i++;
            }
            sum += ret;
            n++;
        }
        System.out.println(sum);
    }

这里我们发现, 当一个代码中带有多重循环的时候, 代码的复杂程度就大大提高了. 而比较复杂的代码就更容易出错.后面我们会采用更简单的办法来解决这个问题。
注意

  1. 和 if 类似, while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }
  2. 和 if 类似, while 后面的 { 建议和 while 写在同一行.
  3. 和 if 类似, while 后面不要多写 分号, 否则可能导致循环不能正确执行.

4.4 break

break 的功能是让循环提前结束.
例题:找到 100 - 200 中第一个 3 的倍数

    public static void main(String[] args) {
        // 100 - 200 中第一个 3 的倍数
        int num = 100;
        while (num <= 200) {
            if (num % 3 == 0) {
                System.out.println("找到了 3 的倍数, 为:" + num);
                break;
            }
            num++;
        }
    }

执行到break,退出循环。

4.5 continue

continue 的功能是跳过这次循环, 立即进入下次循环.
例题:找到 100 - 200 中所有 3 的倍数

    public static void main(String[] args) {
        int num = 100;
        while (num <= 200) {
            if (num % 3 != 0) {
                num++;
                continue;
            }
            System.out.println("3的倍数:"+num);
            num++;
        }
    }

执行到 continue 语句的时候, 就会立刻进入下次循环(判定循环条件), 从而不会执行到下方的打印语句.

4.6 for循环

for(表达式①;布尔表达式②;表达式③){
表达式④;
}

  • 表达式1: 用于初始化循环变量初始值设置,在循环最开始时执行,且只执行一次
  • 表达式2: 循环条件,满则循环继续,否则循环结束
  • 表达式3: 循环变量更新方式

打印1-10的数字

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

计算 1 - 100 的和

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

计算 5 的阶乘

    public static void main(String[] args) {
        int ret = 1;
        for (int i = 1; i < 6; i++) {
            ret *= i;
        }
        System.out.println("5的阶乘:"+ret);
    }

计算 1! + 2! + 3! + 4! + 5!

    public static void main(String[] args) {
        int sum = 0;
        for (int j = 1; j <= 5; j++) {
            int ret = 1;
            for (int i = 1; i < 6; i++) {
                ret *= i;
            }
            sum += ret;
        }
        System.out.println("1-5的阶乘和:"+sum);
    }

注意

  1. 和 if 类似, for 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }
  2. 和 if 类似, for 后面的 { 建议和 while 写在同一行.
  3. 和 if 类似, for 后面不要多写 分号, 否则可能导致循环不能正确执行.
  4. 和while循环一样,结束单趟循环用continue,结束整个循环用break

4.7 do while 循环

do{
循环语句;
}while(循环条件);
先执行循环语句, 再判定循环条件,循环条件成立则继续执行,否则循环结束。
比如:打印1-10

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

注意

  1. do while 循环最后的分号不要忘记
  2. 一般 do while 很少用到, 更推荐使用 for 和 while.

4.8 输入输出

4.8.1 输出到控制台

    public static void main(String[] args) {
        System.out.println("输出换行"); 
        System.out.print("输出不带换行"); 
        System.out.printf("%s\n", "格式化输出"); 
    }
  • println 输出的内容自带 \n, print 不带 \n
  • printf 的格式化输出方式和 C 语言的 printf 是基本一致的.

4.8.2 从键盘输入

使用 Scanner 读取字符串/整数/浮点数

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你的姓名:");
        String name = sc.nextLine();
        System.out.println("请输入你的年龄:");
        int age = sc.nextInt();
        System.out.println("请输入你的工资:");
        float salary = sc.nextFloat();
        System.out.println("你的信息如下:");
        System.out.println("姓名: "+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary);
        sc.close(); // 注意, 要记得调用关闭方法
    }

使用 Scanner 循环读取 N 个数字

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextInt()) {
            int a = sc.nextInt();
            System.out.println(a);
        }
    }

使用 Scanner 循环读取 N 个数字,并求取其平均值

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int sum = 0;
        int num = 0;
        while (sc.hasNextInt()) {
            int tmp = sc.nextInt();
            sum += tmp;
            num++;
        }
        System.out.println("sum="+sum);
        System.out.println("avg="+sum/num);
        sc.close();
    }

注意
当循环输入多个数据的时候, 使用 ctrl + z 来结束输入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl+ d)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/110113.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何查看多开的逍遥模拟器的adb连接端口号

逍遥模拟器默认端口号为&#xff1a;21503。 不过&#xff0c;使用多开器多开的时候&#xff0c;端口就不一定是21503了。 如何查看&#xff1f; 进入G:\xiaoyao\Microvirt\MEmu\MemuHyperv VMs路径中 每多开一个模拟器&#xff0c;就会多出一个文件夹。 进入你要查找端口号…

MATLAB R2018b详细安装教程(附资源)

云盘链接&#xff1a; pan.baidu.com/s/1SsfNtlG96umfXdhaEOPT1g 提取码&#xff1a;1024 大小&#xff1a;11.77GB 安装环境&#xff1a;Win10/Win8/Win7 安装步骤&#xff1a; 1.鼠标右击【R2018b(64bit)】压缩包选择【解压到 R2018b(64bit)】 2.打开解压后的文件夹中的…

leetcode:1207. 独一无二的出现次数(python3解法)

难度&#xff1a;简单 给你一个整数数组 arr&#xff0c;请你帮忙统计数组中每个数的出现次数。 如果每个数的出现次数都是独一无二的&#xff0c;就返回 true&#xff1b;否则返回 false。 示例 1&#xff1a; 输入&#xff1a;arr [1,2,2,1,1,3] 输出&#xff1a;true 解释&…

RabbitMQ消息中间件

一、初始MQ 首先了解一下微服务间通讯有同步和异步两种方式&#xff1a;- 同步通讯&#xff1a;是指两个或多个系统在进行信息交换时&#xff0c;必须在同一时刻进行操作 - 异步通讯&#xff1a;是指两个或多个系统之间的通讯方式&#xff0c;其中发送方和接收方不是在同一时刻…

Hadoop学习总结(搭建Hadoop集群(伪分布式模式))

如果前面有搭建过Hadoop集群完全分布式模式&#xff0c;现在搭建Hadoop伪分布式模式可以选择直接克隆完全分布式模式中的主节点(hadoop001)。以下是在搭建过完全分布式模式下的Hadoop集群的情况进行 伪分布式模式下的Hadoop功能与完全分布式模式下的Hadoop功能相同。 一、克隆…

day55--动态规划13

300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组 第一题&#xff1a;最长递增子序列 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而…

软测推荐第二期:10本高质量测试书籍

在不断发展的软件开发领域&#xff0c;测试是质量的守护者&#xff0c;确保产品不仅满足功能要求&#xff0c;而且提供无缝的用户体验。随着软件复杂性的增加&#xff0c;对完善的测试方法和见解的需求也随之增加。 上次给大家推荐了五本书&#xff0c;获得了大家的积极反馈&a…

二叉搜索树的最小绝对差[简单]

优质博文&#xff1a;IT-BLOG-CN 一、题目 给你一个二叉搜索树的根节点root&#xff0c;返回树中任意两不同节点值之间的最小差值。差值是一个正数&#xff0c;其数值等于两值之差的绝对值。 示例 1&#xff1a; 输入&#xff1a;root [4,2,6,1,3] 输出&#xff1a;1 示例 …

当『后设学习』碰上『工程学思维』

只要我成为一个废物&#xff0c;就没人能够利用我&#xff01; 雷猴啊&#xff0c;我是一只临期程序猿。打过几年工&#xff0c;写过几行代码。但今天我不想聊代码&#xff0c;我们聊聊学习这件事。 技术年年更新&#xff0c;尤其是前端框架&#xff0c;很多时候觉得学习速度都…

asp.net学生考试报名管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net学生考试报名管理系统是一套完善的web设计管理系统系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使 用c#语言开发 应用技术&#xff1a;asp…

在VM虚拟机上安装centos并了解Linux常用命令

一. centos安装 新建一个虚拟机&#xff0c;使用ISO映像文件&#xff08;在浏览器上直接搜索阿里云镜像站&#xff0c;下载合适的镜像文件&#xff09; 安装后设置密码然后重启 重启后输入账号和密码 查看IP 输入命令&#xff1a; vi ifcfg-ens33&#xff0c;进入编辑界面&a…

程序的编译和链接

目录 翻译环境 linux下的测试 ​编辑 预定义符号 执行环境 #define定义宏 #和## # ## 宏参数的副作用 宏和函数对比 优点 缺点 #undef 条件编译 头文件包含 在标准c的任何实现中&#xff0c;存在两种环境——翻译环境和执行环境 翻译环境 翻译环境生成目标文件…

docker 安装minio,访问地址进不去

文章目录 黑马头条P37docker安装minio文图一、启动后页面一直是加载状态进不去 黑马头条P37docker安装minio文图 一、启动后页面一直是加载状态进不去 通过docker logs -f (容器id)查看日志 通过这个报错信息&#xff0c;得知最近minio 升级&#xff0c;一些启动信息和之前不…

2023年MathorCup高校数学建模挑战赛大数据挑战赛赛题浅析

比赛时长为期7天的妈杯大数据挑战赛如期开赛&#xff0c;为了帮助大家更好的选题&#xff0c;首先给大家带来赛题浅析&#xff0c;为了方便大家更好的选题。 赛道 A&#xff1a;基于计算机视觉的坑洼道路检测和识别 A题&#xff0c;图像处理类题目。这种题目的难度数模独一档…

学习鸟哥Linux shell 时遇到的unexpected operator错误

最近在学习鸟哥Linux&#xff0c;其中一个章节讲解了Linux shell script使用语法&#xff0c;运行总是错误&#xff0c;源码如下&#xff1a; #!/bin/bashread -p "Please input &#xff08;Y/N&#xff09;: " yn[ "${yn}" "Y" -o "${y…

一文详解如何从 Oracle 迁移数据到 DolphinDB

Oracle 是一个广泛使用的关系型数据库管理系统&#xff0c;它支持 ACID 事务处理&#xff0c;具有强大的安全性和可靠性&#xff0c;因此被广泛应用于各种企业级应用程序。但是&#xff0c;随着数据规模的增加和业务需求的变化&#xff0c;Oracle 的一些限制和缺点也逐渐暴露出…

【AD9361 数字接口CMOS LVDSSPI】C 并行数据 LVDS

接上一部分&#xff0c;AD9361 数字接口CMOS &LVDS&SPI 目录 一、LVDS模式数据路径和时钟信号LVDS模式数据通路信号[1] DATA_CLK[2] FB_CLK[3] Rx_FRAME[4] Rx_D[5&#xff1a;0][5] Tx_FRAME[6]Tx_D[5&#xff1a;0][7] ENABLE[8] TXNRX系列 二、LVDS最大时钟速率和信…

框架安全-CVE 复现SpringStrutsLaravelThinkPHP漏洞复现

目录 服务攻防-框架安全&CVE 复现&Spring&Struts&Laravel&ThinkPHP概述PHP-开发框架安全-Thinkphp&Laravel漏洞复现Thinkphp-3.X RCEThinkphp-5.X RCELaravel框架安全问题- CVE-2021-3129 RCE JAVAWEB-开发框架安全-Spring&Struts2Struts2框架安全…

windows下使用FFmpeg开源库进行视频编解码完整步聚

最终解码效果: 1.UI设计 2.在控件属性窗口中输入默认值 3.复制已编译FFmpeg库到工程同级目录下 4.在工程引用FFmpeg库及头文件 5.链接指定FFmpeg库 6.使用FFmpeg库 引用头文件 extern "C" { #include "libswscale/swscale.h" #include "libavdevic…