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

news2024/10/6 6:52:52

文章目录

  • 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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RAG原理、综述与论文应用全解析

1. 背景 1.1 定义 检索增强生成 (Retrieval-Augmented Generation, RAG) 是指在利用大语言模型回答问题之前&#xff0c;先从外部知识库检索相关信息。 早在2020年就已经有人提及RAG的概念&#xff08;paper&#xff1a;Retrieval-augmented generation for knowledge-inten…

IDEA 解决 java: 找不到符号 符号: 类 __ (使用了lombok的注解)

原因IDEA版本太高&#xff0c;在 ProcessingEnvironement 预编译的时候是以代理的方式来执行的&#xff0c;不再是直接 javac方式, lombok依赖的 javac方式的 annotation processors 不再生效了 解决办法&#xff1a;下面这一句&#xff0c;加在下图中 -Djps.track.ap.depen…

八口快速以太网交换机芯片方案分享/JL5110

以太网交换机(switch)是一种网络设备&#xff0c;用于在局域网中连接多个计算机和其他网络设备。它可以实现多个端口之间的同时传输&#xff0c;并根据MAC地址进行帧过滤和转发。交换机通过自学习的方式&#xff0c;将MAC地址与相应的接口关联起来&#xff0c;以便将数据帧准确…

C语言中的数组与函数指针:深入解析与应用

文章目录 一、引言二、数组的定义1、数组的定义与初始化2、char*与char[]的区别1. 存储与表示2. 修改内容3. 作为函数参数 三、字符串指针数组1. 定义与概念2. 使用示例3. 内存管理 四、从字符串指针数组到函数指针的过渡1、字符串指针数组的应用场景2、函数指针的基本概念3、如…

【RedHat9.0】Timer定时器——创建单调定时器实例

一个timer&#xff08;定时器&#xff09;的单元类型&#xff0c;用来定时触发用户定义的操作。要使用timer的定时器&#xff0c;关键是要创建一个定时器单元文件和一个配套的服务单元文件&#xff0c;然后启动这些单元文件。 定时器类型&#xff1a; 单调定时器&#xff1a;即…

解析html内容的h标签成目录树(markdown解析出来的html)

一.本人用的markdown插件是cherry-markdown&#xff0c;个人觉得比较好用&#xff0c;画图和数学公式都整合的很好 https://github.com/Tencent/cherry-markdown 二.背景 经过markdown解析的html&#xff0c;要取里面的h标签转换成目录树&#xff0c;发现这里面都要人工计算&…

EXCEL-VB编程实现自动抓取多工作簿多工作表中的单元格数据

一、VB编程基础 1、 EXCEL文件启动宏设置 文件-选项-信任中心-信任中心设置-宏设置-启用所有宏 汇总文件保存必须以宏启动工作簿格式类型进行保存 2、 VB编程界面与入门 参考收藏 https://blog.csdn.net/O_MMMM_O/article/details/107260402?spm1001.2014.3001.5506 二、…

用Vue仿了一个类似抖音的App

大家好&#xff0c;我是 Java陈序员。 今天&#xff0c;给大家介绍一个基于 Vue3 实现的高仿抖音开源项目。 关注微信公众号&#xff1a;【Java陈序员】&#xff0c;获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。 项目介绍 douyin —— 一个基于 Vue、Vite 实…

解决uCharts图表在微信小程序层级过高问题

uniapp微信小程图表层级过高问题&#xff1f; 项目中涉及 uCharts图表&#xff0c;在 App/H5端均正常使用&#xff0c;微信小程序 存在层级问题&#xff01; 文章目录 uniapp微信小程图表层级过高问题&#xff1f;效果图遇到问题解决方案 啰嗦一下~&#xff0c;自己的粗心 在实…

Firefox 关键词高亮插件的简单实现

目录 1、配置 manifest.json 文件 2、编写侧边栏结构 3、查找关键词并高亮的方法 3-1&#xff09; 如果直接使用 innerHTML 进行替换 4、清除关键词高亮 5、页面脚本代码 6、参考 1、配置 manifest.json 文件 {"manifest_version": 2,"name": &quo…

HDLbits 刷题 --Always nolatches

学习: Your circuit has one 16-bit input, and four outputs. Build this circuit that recognizes these four scancodes and asserts the correct output. To avoid creating latches, all outputs must be assigned a value in all possible conditions (See also always…

内存管理是如何影响系统的性能的

大家好&#xff0c;今天给大家介绍内存管理是如何影响系统的性能的&#xff0c;文章末尾附有分享大家一个资料包&#xff0c;差不多150多G。里面学习内容、面经、项目都比较新也比较全&#xff01;可进群免费领取。 内存管理对系统性能的影响至关重要&#xff0c;主要体现在以下…

课程设计项目3.2:基于振动信号分析的电机轴承故障检测

01.课程设计内容 02.代码效果图 获取代码请关注MATLAB科研小白的个人公众号&#xff08;即文章下方二维码&#xff09;&#xff0c;并回复&#xff1a;MATLAB课程设计本公众号致力于解决找代码难&#xff0c;写代码怵。各位有什么急需的代码&#xff0c;欢迎后台留言~不定时更新…

Js之运算符与表达式——②

运算符&#xff1a;也叫操作符&#xff0c;是一种符号。通过运算符可以对一个或多个值进行运算&#xff0c;并获取运算结果。 表达式&#xff1a;由数字、运算符、变量的组合&#xff08;组成的式子&#xff09;。 表达式最终都会有一个运算结果&#xff0c;我们将这个结果称…

【cache】卡常

来源于《国家集训队2024论文集》中的《论现代硬件上的常数优化》 个人总结&#xff1a; 不要开二的次幂作为维度的数组&#xff0c;否则常数会变大【存疑】。总是保证内存访问连续性更高。比如 st表&#xff0c;把log维放在第二维&#xff0c;会导致内存访问距离最大为N*LOG。…

权限提升技术:攻防实战与技巧

本次活动赠书1本&#xff0c;包邮到家。参与方式&#xff1a;点赞收藏文章即可。获奖者将以私信方式告知。 网络安全已经成为当今社会非常重要的话题&#xff0c;尤其是近几年来&#xff0c;我们目睹了越来越多的网络攻击事件&#xff0c;例如公民个人信息泄露&#xff0c;企业…

Vulnhub:MY FILE SERVER: 1

目录 信息收集 1、arp 2、nmap 3、whatweb WEB web信息收集 dirmap FTP匿名登录 enum4linux smbclient showmount FTP登录 ssh-kegen ssh登录 提权 系统信息收集 脏牛提权 get root 信息收集 1、arp ┌──(root㉿ru)-[~/kali/vulnhub] └─# arp-scan -l I…

信息咨询模块

信息资讯 资讯文章专题、互动评论、自定义多级分类&#xff0c;打造本地新闻圈 简介 本项目旨在打造一个本地新闻资讯平台&#xff0c;为用户提供以下功能&#xff1a; 资讯文章&#xff1a;提供本地新闻、生活、娱乐等各类资讯文章。专题&#xff1a;针对重要事件或热门话…

E4438C安捷伦E4438C信号发生器

181/2461/8938产品概述&#xff1a; Agilent / HP E4438C ESG 矢量信号发生器结合了出色的 RF 性能和复杂的基带生成功能&#xff0c;可在高达 6 GHz 的基带、IF 和 RF 频率上提供经过校准的测试信号。Agilent / HP E4438C ESG 矢量信号发生器提供具有任意波形和实时 I/Q 功能…

波士顿房价预测案例(python scikit-learn)---多元线性回归(多角度实验分析)

波士顿房价预测案例&#xff08;python scikit-learn&#xff09;—多元线性回归(多角度实验分析) 这次实验&#xff0c;我们主要从以下几个方面介绍&#xff1a; 一、相关框架介绍 二、数据集介绍 三、实验结果-优化算法对比实验&#xff0c;数据标准化对比实验&#xff0…