Java基础之流程控制语句(循环)

文章目录

  • Java基础之流程控制语句(循环)
    • 1.顺序结构
    • 2.分支结构
      • if语句的第一种格式
      • if语句的第二种格式
      • if语句的第三种格式
      • Switch语句格式
      • Switch的其他知识点
        • default的位置和省略
        • case穿透
        • Switch的新特性
    • 3.循环结构
      • 循环的分类
        • for 循环
        • while 循环
        • for循环 与 while循环 的对比
    • 4.do...while

Java基础之流程控制语句(循环)

1.顺序结构

image-20240402135552285

2.分支结构

if语句的第一种格式

if (关系表达式){   if (变量>2){

         System.out.println("")

                             }                                
                }

image-20240402140218977

练习:

image-20240402140244429

代码呈现:

public class Demo1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入女婿的酒量");
        int wine =sc.nextInt();
        if (wine > 2){
            System.out.println("小伙子不错,叔叔很满意你哇");
        }

    }
}

if语句的第二种格式

if(){
    语句体1;
}else{
    语句体2
}
    

image-20240402141847917

image-20240402141907402

练习:

image-20240402141943158

代码 呈现:

public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("键盘录入一个数表示身上带的钱");
        int money = sc.nextInt();
        if (money >= 100){
            System.out.println("吃网红餐厅");
        }else {
            System.out.println("吃沙县小吃");
        }
    }
}

练习2:

image-20240402142428225

public class Test2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入实际付的钱");
        int money = sc.nextInt();
        if (money > 600 ){
            System.out.println("支付成功");
        }else{
            System.out.println("支付失败");
        }
    }
}

练习3

image-20240402142825853

代码呈现:

public class Test3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入一个整数表示电影院的票号(1-100)");
        int tickt = sc.nextInt();
        if (tickt > 0 && tickt<=100){
        if (tickt % 2 == 0){
            System.out.println("坐右侧");
        }else {
            System.out.println("坐左侧");
           }
        }
    }
}

if语句的第三种格式

if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}
...
else {
语句体n + 1;
}
/**首先计算关系表达式1的值
如果为true就执行语句体1;如果为false就计算关系表达式2的值
如果为true就执行语句体2;如果为false就计算关系表达式3的值
如果所以关系表达式结果都为false,就执行语句体n+1。**/

练习:

image-20240402144720366

代码呈现:

public class Test4 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入小明的考试分数");
        int grade = sc.nextInt();
        if (grade >= 0 && grade <= 100) {
            if (grade >= 95 && grade <= 100) {
                System.out.println("奖励一个自行车");
            } else if (grade >= 90 && grade <= 94) {
                System.out.println("奖励去游乐园玩一天");
            } else if (grade >= 80 && grade <= 89) {
                System.out.println("奖励一个变形金刚");
            } else if (grade < 80) {
                System.out.println("一顿毒打");
            }
        }else {
            System.out.println("输入成绩错误");
        }
    }
}

Switch语句格式

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

执行流程:

首先计算表达式的值。
依次和case后面的值进行比较,如果有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。如果所有的case后面的值和表达式的值都不匹配,就会执行default里面的语句体,然后结束整个switch语句。

格式说明:

表达式:(将要匹配的值)取值为byte. short、int、 char。
JDK5以后可以是枚举,JDK7以后可以是String。
case:后面跟的是要和表达式进行比较的值(被匹配的值)。break:表示中断,结束的意思,用来结束switch语句。
default:表示所有情况都不匹配的时候,就执行该处的内容,
和if语句的else相似。
case后面的值只能是字面量,不能是变量case给出的值不允许重复

image-20240402151228028

练习:

image-20240402151312756

代码呈现:

public class Demo2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入想吃的面条");
        String noodles = sc.next();
        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;


        }
    }
}

Switch的其他知识点

default的位置和省略

1.位置:defaule不一定是写在最下面的,我们可以写在任意位置。只不过习惯会写在最下面

2.省略: defaule可以省略,语法不会有问题,但是不建议省略。

case穿透

case穿透是语句体中没有写break导致的。
执行流程:
首先还是会拿霍小括号中表达式的值跟下面每一个case进行匹配,
如果匹配上了,就会执行对应的语句体,如果此时发现了break,那么结束整个switch语句。
如果没有发现break,那么程序会维续执行下一个case的句体,一直遇到break或者右大括号为止。

使用场景:
如果多个case的语句体重复了,那么我们考虑利用case穿透去简化代码,

Switch的新特性

要在JDK12以及之后的版本才有

int number =10;
switch(number){
case 1 ->System.out.println("-");

case 2 ->system.out.println("二");

case 3->System.out.println("三");

default->system.out.println("没有这种选项");

练习:

image-20240402153602680

代码呈现:

public class Test5 {
    public static void main(String[] args) {
        Scanner sc =new Scanner(System.in);
        System.out.println("输入一个数代表周几");
        int week = sc.nextInt();
            switch (week){
                /**case 1 -> System.out.println("今天是工作日");
                case 2 -> System.out.println("今天是工作日");
                case 3 -> System.out.println("今天是工作日");
                case 4 -> System.out.println("今天是工作日");
                case 5 -> System.out.println("今天是工作日");
                case 6 -> System.out.println("今天是休息日");
                case 7 -> System.out.println("今天是休息日");
                default -> System.out.println("输入错误,请输入范围是1-7的整数");**/

                case 1, 2, 3, 4, 5 -> System.out.println("今天是工作日");
                case 6, 7 -> System.out.println("今天是休息日");
                default -> System.out.println("输入错误,请输入范围是1-7的整数");
            }
        }
    }

3.循环结构

循环的分类

for 循环
格式:
for(初始化语句; 条件语句; 条件控制语句){
    循环语句;
}

例子:
for (int i = 1; i <= 10; i++){
    System.out.println("HelloWorld")
}

执行流程:

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

image-20240402155430050

练习:

image-20240402155519044

for (int i = 1; i <= 5; i++){
    System.out.println("HelloWorld")
}

练习2:

image-20240402155641920

for (int i = 1; i <= 5; i++){
    System.out.println(i)
}

练习3:

image-20240402155655453

for (int i = 5; i >= 1; i--){
    System.out.println(i)
}

练习4

image-20240402155947697

public class Test6 {
    public static void main(String[] args) {
        for (int i = 1; i <=5; i++){
            System.out.println("第" + i + "执行断线重连的业务逻辑");

        }
    }
}

练习5:

image-20240402160355398

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

练习6:

image-20240402161012205

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

练习7:

image-20240402161447421

public class Test9 {
    public static void main(String[] args) {
        Scanner sc =new Scanner(System.in);
        System.out.println("请输入第一个整数表示范围的最小值");
        int number1 = sc.nextInt();
        System.out.println("请输入第二个整数表示范围的最大值");
        int number2 = sc.nextInt();

        int count = 0;
        for (int i = number1; i <= number2 ; i++) {
            if (i % 3 == 0 && i % 5 == 0){
                count++;
                System.out.println(count);
            }
        }
    }
}
while 循环
格式
    while(条件判断语句){
        循环体语句;
        条件控制语句;
}

image-20240402162722507

练习:

利用while循环打印1-100

public class Demo3 {
    public static void main(String[] args) {
        int i = 1;
        while (i <= 100){
            System.out.println(i);
            i++;
        }
    }
}
for循环 与 while循环 的对比

相同点:运行规则一模一样

不同点:for循环中,控制循环的变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了而循环中,控制循环的变量,对于While循环来说不归属其语法结构中,在while循环结束后,该变量还可以继续使用

for 和 while 的区别:

for循环中:知道循环次数或者循环的范围

while循环:不知道循环的次数和范围,只知道循环的结束条件。

练习:

image-20240402163444636

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

       double height = 8844430;
       double paper = 0.1;
       int count = 0;
       while (paper < height){
           //每一次折叠纸张的厚度都是原来的两倍
           paper = paper * 2;
           count++;
       }
       //当循环结束之后count的值就是折叠的次数
        System.out.println(count);
    }
}

练习2:

需求:键盘一个整数x。
如果x是一个回文整数,打印 是回文数,否则,返回 不是回文数。
解释:回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
例如,121 是回文,而 123 不是。

public class Test11 {
    public static void main(String[] args) {
            /*需求:给你一个整数x。
              如果 x是一个回文整数,打印 true ,
              否则,返回 false 。
              解释:回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
              例如,121 是回文,而 123不是。*/

       /* //核心思路:把数字倒过来跟原来的数进行比较
        //1.定义数字
        int x = 12;
        //2.获得个位数
        int ge = x % 10;
        //获得十位
        int shi = x / 10 % 10;

        //拼接
        int result = ge * 10 + shi;
        System.out.println(result);*/
        
        //键盘录入一个整数
        Scanner sc = new Scanner(System.in);
        System.out.println("输入一个整数");
        int x = sc.nextInt();
        int temp =x;
        int num = 0;
        //利用循环从右往左获取每一位数字
        while (x != 0){
            int ge = x % 10;//4
            //修改x的值
            x= x / 10;
            //
            num = num * 10 + ge;
        }
        //System.out.println(num);
        //System.out.println(num == temp);
        if (num == temp){
            System.out.println("是回文数");
        }else{
            System.out.println("不是回文数");
        }
    }
}

练习3:

需求:

键盘录入两个整数,被除数和除数(都是正数,且不超过int的范围)

将两数相除,要求不使用乘法、除法和 %运算符。得到商和余数。

public class Test12 {
    public static void main(String[] args) {
        /*需求:

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

            分析:被除数 / 除数 = 商 ...余数

            int a =100;
            int b = 10;

            100 - 10 = 90
            90 - 10 = 80
            80 - 10 = 10
            ...
            10 - 10 = 0(余数)
        */
        //键盘录入
        Scanner sc = new Scanner(System.in);
        System.out.println("输入被除数");
        int a = sc.nextInt();
        System.out.println("输入除数");
        int b = sc.nextInt();
        //定义次数
        int temp = a;
        int count = 0;
        //while循环
        while (a >= b){
            a = a - b;//余数
            count++;//商

        }
        System.out.println(temp+"除以"+b+"的商是:"+count+",余数是:"+a+".");
    }
}

4.do…while

特点: 先执行后判断

格式:

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

image-20240402172821880

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

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

相关文章

Java毕业设计 基于SSM学生选课系统

Java毕业设计 基于SSM学生选课系统 SSM jsp 学生选课系统 功能介绍 学生&#xff1a;登录 注册 全部课程 未选课程 已选课程 添加课程 删除课程 推荐课程 搜索 个人资料 修改信息 修改密码 我的选课 管理员&#xff1a; 登录 注册 课程管理 添加修改删除课程 课程查看 查看选…

新华三交换机配置开启Web图形界面

新华三交换机配置开启Web图形界面 1. 交换机桥接到电脑&#xff0c;电脑配置网络ip 2. 交换机配置ip&#xff0c;可ping通。 <H3c>sys System View: return to User View with CtrlZ.[H3c]inter vlan 1[H3c-Vlan-interface1]ip add 192.168.3.20 24[H3c-Vlan-interface1…

LLMs 可能在 2 年内彻底改变金融行业

在艾伦图灵研究所&#xff08;The Alan Turing Institute&#xff09;最新的一项研究中&#xff0c;我们看到了大型语言模型&#xff08;Large Language Models&#xff0c;LLMs&#xff09;的一种可能性。它有望通过检测欺诈行为、生成财务洞察以及自动化客户服务&#xff0c;…

android 使用ollvm混淆so

使用到的工具 ndk 21.4.7075529&#xff08;android studio上下载的&#xff09;cmake 3.10.2.4988404&#xff08;android studio上下载的&#xff09;llvm-9.0.1llvm-mingw-20230130-msvcrt-x86_64.zipPython 3.11.5 环境配置 添加cmake mingw环境变量如下图: 编译 下载…

在Windows中查找电脑序列号的几种方法,看看有没有适合你的

序言 Windows不会在其界面的任何位置显示PC的序列号,流行的系统信息工具也不会。但你通常可以通过简单的命令、在BIOS中查看或在硬件本身上查找PC的序列号。 运行WMIC命令 打开命令提示符或PowerShell窗口以开始。在Windows 11、Windows 10或Windows 8上,右键单击开始按钮…

蓝桥杯刷题第六天(昨天忘记发了)

今天想从不一样的角度来解题&#xff1a;从时间紧张暴力求解到思路阔达直接通过所有案例 暴力方法&#xff1a; 思路第一眼看到这个问题我就想到了第一个思路就是先用两个数组一个存石子数一个存颜色状态&#xff0c;每次遍历一遍看看有没有相邻石子颜色一样且为和最小的。 im…

64B66B编码详解

文章目录 前言一、64B66B的实现方式二、64B66B数据帧格式 前言 参考&#xff1a;https://blog.chinaaet.com/justlxy/p/5100064750 64B66B是我们在高速通信协议中的一种处理PHY层发送数据的编码。为何我们要编码&#xff0c;直接把原数据发送出去不行吗&#xff1f;答案是当然…

opengl草稿复习,承上启下(一)

目录 1、链接文件夹中的cpp 2、链接资源到输出目录 3、多编译目标 4、cmakelist添加库 4、添加glfw和glad 5、glfw运行 6、NDC、VBO、VAO 7、渐变三角形 8、渲染两个三角形 9、渲染两个三角形&#xff0c;同时基于原来颜色进行渐变 10、三角形渲染模块化 11、纹理渲…

26版SPSS操作教程(初级第十四章)

前言 #由于导师最近布置了学习SPSS这款软件的任务&#xff0c;因此想来平台和大家一起交流下学习经验&#xff0c;这期推送内容接上一次第十三章的学习笔记&#xff0c;希望能得到一些指正和帮助~ 粉丝及官方意见说明 #针对官方爸爸的意见说的推送缺乏操作过程的数据案例文件…

GT收发器PHY层设计(2)GT_module模块设计

文章目录 前言一、设计框图二、例化IP核端口三、common_reset_i模块四、gt_usrclk_source模块五、IBUFDS_GTE2和gtwizard_0_common模块六、顶层模块gt_module总结 前言 根据官方的example design设计一个自定义协议的高速PHY设计 一、设计框图 设计思路及代码思路参考FPGA奇哥…

mysql 数据库基本操作

mysql 数据库基本操作 1、创建五张表 – user 表&#xff1a;后台用户表 – product 表&#xff1a;产品表 – account 表&#xff1a;客户账户表 – product_account 表 : 客户购买表 – customer 表 &#xff1a; 客户表 2、创建表 SQL 语句&#xff1a; 注意&#xff1a…

简单而复杂的Python

Python是一种简单&复杂的编程语言。简单的时候可以到极致&#xff1a; print(hello world!)另一方面&#xff0c;Python 也具有许多复杂的语法特性&#xff0c;例如面向对象编程、装饰器、迭代器、生成器等等。这些特性使得 Python 适用于各种不同的编程任务和项目。 当我…

ROS中的栅格地图

目录 一、ROS中栅格地图格式 二、C节点发布地图 2.1 发布者发布地图的C实现 三、python节点发布地图 一、ROS中栅格地图格式 机器人导航所使用的地图数据&#xff0c;就是ROS导航软件包里的map_server 节点&#xff0c;在话题/map中发布的消息数据&#xff0c;消息类型是na…

智能锁也能用上GPT技术了?大扭力电机更配中国门?这家公司再次引领行业

智能锁也能用上GPT技术了&#xff1f;小小智能锁电机&#xff0c;竟然能拉动2.5吨SUV&#xff1f; 今日&#xff0c;中国智能锁领军品牌德施曼在北京举办「2024德施曼创新技术预沟通会」&#xff0c;德施曼技术研发中心总监桑胜伟揭秘了两项行业突破性技术——GPTfinger及龙霆…

vulnhub pWnOS v2.0通关

知识点总结&#xff1a; 1.通过模块来寻找漏洞 2.msf查找漏洞 3.通过网站源代码&#xff0c;查看模块信息 环境准备 攻击机&#xff1a;kali2023 靶机&#xff1a;pWnOS v2.0 安装地址&#xff1a;pWnOS: 2.0 (Pre-Release) ~ VulnHub 在安装网址中看到&#xff0c;该靶…

Deferred library xxx was not loaded

Deferred 延迟修饰词作用下的文件库尚未完成载入

Mysql的MHA

目录 一、MHA概念 1.1 MHA 的组成 1.2 MAH特性 1.3 MHA原理 1.4当主挂了以后会给哪个从服务器&#xff1f; 二、搭建MysqlMHA 2.1实验思路 2.2实验准备 2.3服务搭建 1. 关闭防火墙和selinux 2、修改 master&#xff08;192.168.91.103&#xff09;、Slave1&#xff0…

vue3鼠标向下滑动,导航条改变背景颜色和logo的封装

代码中使用了element-plus组件&#xff0c;需先安装 向下滑动前 向下滑动后&#xff08;改变了logo 字体 背景颜色&#xff09; <script lang"ts" setup> import router from /router; import { ArrowDown } from element-plus/icons-vue import { ref, …

课程15 光在晶体中的传播(三)(视频P53-55)

旋光与菲涅尔棱镜 旋光现象 说明从石英晶片出射的&#xff0c;依然是线偏振光&#xff0c;其偏振面却发生了旋转。 左旋石英与右旋石英 ![左旋石英与右旋石英![](https://img-blog.csdnimg.cn/direct/6ead0356c3c740169ba6e723863b743b.png) 旋光异构体 右旋石英表现出φR &a…

基于单片机30mv和300v量程的电压表仿真设计

**单片机设计介绍&#xff0c;基于单片机30mv和300v量程的电压表仿真设计 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机30mV和300V量程的电压表仿真设计&#xff0c;是一个旨在通过单片机实现宽量程电压测量和显示的综合性项目…