展开菜单
首页 精品内容 本月促销 装机必备 Windows macOS软件 IOS软件 Android AI PDF教程 专题
全部分类

当前位置:

首页 > 编程开发 > Java逻辑控制怎么使用

Java逻辑控制怎么使用

一,块作用域首先在深入学习控制结构之前,需要先了解块(block)的概念。块:即复合语句,是指由一对大括号括起来的若干条简单的Java语句。块确定了变量的作用域。一个块可以嵌套在另一个块中。publicclassTestDemo220425{publicstaticvoidmain(String[]args){intn=10;{intk=20;intn=20;}}}在这段代码中,我们主函数里面的那个括号括起来的部分就是块。一个块可以嵌套在另一个块里面,但是注意,在Java里面,不能在嵌套的块里面声明同名的

    一,块作用域

    首先在深入学习控制结构之前,需要先了解块(block)的概念。

    块:即复合语句,是指由一对大括号括起来的若干条简单的 Java 语句。块确定了变量的作用域。一个块可以嵌套在另一个块中。

    public class TestDemo220425 {
        public static void main(String[] args) {
            int n = 10;
            {
                int k = 20;
                int n = 20;
            }
        }
    }

    在这段代码中,我们主函数里面的那个括号括起来的部分就是块。一个块可以嵌套在另一个块里面,但是注意,在Java里面,不能在嵌套的块里面声明同名的变量,比如上面代码的内部块里面 int n = 20的做法就是错误的。这里要区分C/C++里面有全局变量遇到同名局部变量的时候会优先使用局部变量,屏蔽全局变量,这在Java里面是不允许这样做的(Java无全局变量的概念,这里只是类比)。

    二,顺序结构

    顺序结构比较简单,按照代码书写的顺序一行一行执行。

    图示:

    Java逻辑控制怎么使用

    三,分支结构

    图示:

    Java逻辑控制怎么使用

    注意:if /else if 之间是一个并列的关系,不像是if else是一个非此即彼的关系,这种叫做多分支的结构。

    有关分支结构的几个注意点:

    1,if括号里面的表达式只能是布尔表达式,没有什么非0为真,0表示假。

    2,Java里面的代码风格我们推荐行尾风格。

    3,悬空else问题,也就是说if/else语句最好一定要把括号加上,这样代码可读性更好,如果不加,当有多个if/else语句时,else一定是与最近的else进行匹配

    public class TeseDemo220424 {
        public static void main(String[] args) {
            int x = 10;
            int y = 10;
            if (x == 10)
                if (y == 10)
                    System.out.println("aaa");
            else //这个else其实匹配的是if(y == 10)
                System.out.println("bbb");
        }
    }

    switch语句问题(重点)

    public class TeseDemo220424 {
        public static void main(String[] args) {
            int a = 3;
            switch(a){
                default:
                    System.out.println("输入错误!");
                    break;
                case 1:
                    System.out.println(1);
                    break;
                case 2:
                    System.out.println(2);
                    break;
            }
        }
    }

    注意:

    1,无论default的位置在哪里,只要没有匹配到任何一个case,就会直接走default。

    2,每一个case语句以及default语句后面的break语句都不能省略,不然就会穿透执行,除非是在特定的情况下,不然break都不能掉。

    3,switch结构里面的关键字只有case,break,continue是用在循环里面的,这里是分支结构,不要混淆。

    4,switch括号里面的数据的类型只能是byte, short, int, char,String, enum类型,然后case后面的常量与switch匹配就行。(注意不能是long,因为整形都会往int转,但是long转int会有精度损失)。

    5,case后面的常量值不能够重复,每一个case就代表一种不同的情况。

    6,switch的括号里面可以放表达式,但是不能像if语句一样,可以放一些较为复杂的表达式。

    7,switch语句可以嵌套,但是不好看。

    四,循环

    三大循环:while循环,for循环,do while循环(循环具体的基本定义就不做介绍了,这里只是点一些要注意的点)

    4.1,易错点

    1,循环的几个部分,循环变量的定义,条件判断,循环体,循环变量的迭代。一定要注意循环变量的迭代,如果说一个循环变量没有迭代直至向着跳出循环的方向进行的话,那么就可能造成死循环了。

    2,不要在循环内部对循环变量做手脚,即使你需要使用你的循环变量,用一个临时的变量来接收它的值,然后再去使用。

    3,轻易不要将浮点数作为循环变量。

    public class TestDemo220425 {
        public static void main(String[] args) {
            for(double x = 0;x != 10;x += 0.1){
                System.out.println("haha");
            }
        }
    }

    不出意外的,这段代码死循环了,也就是我说的将浮点数作为循环变量。因为0.1在存储的时候,小数部分是无法用二进制准确表示的,所以我们每次加的都是一个近似值,那么这里可能刚好加了之后可能刚好跳过了10,所以循环就一直进行了下去。

    4.2,break语句

    public class TeseDemo220424 {
        public static void main(String[] args) {
            int i = 1;
            while(i <= 10){
                if(i == 2){
                    break;
                }
                System.out.println("hehe");
                i++;
            }
        }
    }

    程序运行截图:

    Java逻辑控制怎么使用

    break语句的作用是跳出它所在的循环,比如上面当i == 2的时候,就会跳出while循环,所以只会输出一个hehe。

    break的扩展用法:

    在Java中,是没有goto语句的,但是因为设计者认为goto语句思想还是没有问题的在某些特定的条件下,确实可以起到很好的跳出循环的效果,所以在Java里面就发明了**带标签的break语句,作用是可以达到break到标签所指定的循环的外部。 (标签只要是合法的标识符即可)**

    示例:

    public class TestDemo220425 {
        public static void main(String[] args) {
            label1:
            while(true){
                for(int i = 0;i < 10;i++){
                    if(i == 3){
                        break label1;
                    }
                    System.out.println(i);
                }
            }
            System.out.println("已跳出循环!");
        }
    }

    程序运行截图:

    Java逻辑控制怎么使用

    可以看到,到我们利用标签后,可以指定跳出到哪里。如果这里只是用break,不用标签的话,那么break就只会跳出里层的for循环,外面的while还是一个死循环,用了标签之后,当i== 3,就可以直接跳出到while循环的外部。

    4.3,continue语句

    public class TeseDemo220424 {
        public static void main(String[] args) {
            int i = 1;
            while(i <= 10){
                if(i == 2){
                    continue;
                }
                System.out.println("hehe");
                i++;
            }
        }
    }

    程序运行截图:

    Java逻辑控制怎么使用

    continue语句的作用是结束本轮循环而开始下一次的循环,如上题,当i == 2,所以就会直接跳过后面的语句,也就是i++不会执行了,导致i一直等于2,所以陷入了死循环。当然如果你这里用for循环就不会这样了,因为i++的执行顺序在前面,continue影响不到

    continue扩展用法:

    同样的,在continue里面,也是可以使用标签的,可以指定跳到与标签匹配的循环的首部。

    示例:

    public class TestDemo220425 {
        public static void main(String[] args) {
            label1:
            for(int i = 0;i < 10;i++){
                if(i == 3){
                    continue label1;
                }
                System.out.println(i);
            }
    }

    程序运行截图:

    Java逻辑控制怎么使用

    五,输入输出

    5.1,输出到控制台

    Java逻辑控制怎么使用

    利用%结合上面的转换符就可以进行格式化的输出,当然在进行格式化输出的时候,也可以运用一些标志,比如输出的时候带前缀,带正负号等等…

    Java逻辑控制怎么使用

    5.2,从键盘输入

    public class TeseDemo220424 {
        public static void main(String[] args) {
            Scanner myscanner = new Scanner(System.in);
            System.out.println("请输入年龄");
            int num = myscanner.nextInt();
            System.out.println(num);
            System.out.println("请输入名字");
            String str = myscanner.nextLine();//读入一行
            System.out.println(str);
            System.out.println("请输入专业");
            String str1 = myscanner.next();
            System.out.println(str1);//读入一个字符串,遇到空格停止
        }
    }

    这里就是要注意你的输入与你接收的方法要对应,另外就是当你用了nextLine()来接收一行的时候,要注意它前面有不有用输入的方法,因为你的换行会被当成一行读入到nextLine()里面,这里就类似于C语言里面吃掉缓冲区里面的回车是一个道理。

    程序运行截图:

    Java逻辑控制怎么使用

    扩展,在用键盘进行输入的时候,我们是能够看到我们自己的输入的,但是在某些情况下,比如输入密码,我们一般是不想让人看到的,所以这里可以运用到Console类。(这里只做简要介绍)

    Console类:访问与当前Java虚拟机关联的基于字符的控制台设备(如果有的话)的方法,也即使从控制台接收输入的方法。

    使用示例:

    import java.io.Console;
    public class TestDemo220425 {
        public static void main(String[] args) {
            Console cons = System.console();
            String username = cons.readLine("User name: ");
            char[] passwd = cons.readPassword("Password:");
        }
    }

    在IDEA下的运行截图:

    Java逻辑控制怎么使用

    ❌???怎么直接报空指针异常了,寻思着这里也没用到指针吧,感到十分的不解…????????

    后来,度娘告诉我是这样的:在使用IDEA等集成开发环境中,使用Console将全为null,表示Java程序无法获得Console实例,是因为JVM不是在命令行中被调用的,或者输入输出被重定向了。以至于我们只能去控制台下或者linux环境下去运行程序,如下图在控制台下运行:

    Java逻辑控制怎么使用

    可以看到在控制台下运行正常,并且我们输入的密码是看不到的(这里真的输入了的哦,只是看不到,中国人不骗中国人的!????)

    5.3,循环输入

    public class TeseDemo220424 {
        public static void main(String[] args) {
            Scanner myscanner1 = new Scanner(System.in);
            while(myscanner1.hasNextInt()){
                int age = myscanner1.nextInt();
            }
        }
    }

    hasNextInt():如果此扫描器输入中的下一个标记可以使用nextInt()方法将其解释为默认基数中的int值,则返回true。也即是说只有你下一个输入的是int类型的值才能够进入循环。

    程序运行截图:

    Java逻辑控制怎么使用

    循环输入的时候可以ctrl + D 进行正常退出

    六,猜数字游戏

    这里主要是介绍Java里面的生成随机数的方法

    所在包:Java.util.random

    import java.util.Random;
    public class TeseDemo220424 {
        public static void main(String[] args) {
    //        生成随机数
            Random random = new Random();
            int rannum = random.nextInt(100);//生成[0,100) 的随机数 其他范围可以通过在后面加上数来进行范围改变,默认左边都是从0开始
            
        }
    }

    对于int rannum = random.nextInt();如果你后面nextInt()中不给值,那么它产生的就是所有有效的整数,包括正数,负数,0

    注意:Random random = new Random(2022); 这里在定义随机数对象的时候是可以传参的,因为生成随机数是以时间戳为参考的,所以当你传入一个数后,他就只会以这个数为标准进行时间戳的计算,进而产生的随机数每次都是一样的。

    其他方法:

    Java逻辑控制怎么使用

    其他方法主要就是Math.random(),这个产生的是0~1之间的小数,左闭右开。当然这个是没有上面那种产生同一个随机数的用法的。

    本文内容来源于互联网,如有侵权请联系删除。
    作者最新文章
    编程开发
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    PDF教程

    PDF教程适合刚接触PDF文件的用户,本文整理PDF打开、编辑、转换、合并、压缩等常见基础操作。通过这些教程可以快速了解PDF文件怎么处理,解决办公、学习和资料科整理中的常见问题。使用极轻PDF可在线完成多种PDF操作,适合新手快速上手。

    Mac软件 更多
    灵活计算器
    灵活计算器

    灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

    赤友清理大师
    赤友清理大师

    赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

    极度公式
    极度公式

    极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

    图几
    图几

    图几是一款适用于 macOS 的截图、标注与美化工具,支持离线操作保障隐私。界面整理和高频系统操作被放到一起考虑,桌面或窗口内容一多时,管理起来会更省心。

    密码键盘
    密码键盘

    密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

    思源笔记
    思源笔记

    思源笔记是一款本地笔记软件,提供所见即所得的编辑方式,为长文写作带来顺滑的体验。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

    Office 365 简体中文
    Office 365 简体中文

    一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。

    WALTR PRO
    WALTR PRO

    WALTR是一款电脑至iOS文件传输转换工具,操作简单,快速实现文件识别与传送。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

    CodeExpander
    CodeExpander

    CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。

    Mountain Duck
    Mountain Duck

    Mountain Duck 是一款能将多个网盘挂载到本地的工具,像本地磁盘一样使用网盘。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。

    Menuist
    Menuist

    Menuist 是一款面向 macOS 的 Finder 右键菜单增强工具,主要用来补充新建文件、快捷导航等常用操作,让日常文件管理和访问路径时更高效、更顺手。

    Mole
    Mole

    Mole 是一款专为 Mac 设计的深度清理优化工具,涵盖缓存清理、应用管理及实时状态监控等功能。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。

    WINDOWS 更多
    Windows 10
    Windows 10

    Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

    极度公式
    极度公式

    极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

    密码键盘
    密码键盘

    密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

    思源笔记
    思源笔记

    思源笔记是一款本地笔记软件,提供所见即所得的编辑方式,为长文写作带来顺滑的体验。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

    傲梅轻松备份
    傲梅轻松备份

    傲梅轻松备份是一款专业易用的数据备份软件,为重要数据提供安全保障。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

    Office 365 简体中文
    Office 365 简体中文

    一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。

    Wise Folder Hider Pro
    Wise Folder Hider Pro

    Wise Folder Hider Pro 是一款专业级文件和文件夹隐藏加密软件,为私密数据添加多重保护。高频操作更强调就近处理,浏览、整理和跨目录移动文件时,来回切换和重复点击都会少很多。

    WALTR PRO
    WALTR PRO

    WALTR是一款电脑至iOS文件传输转换工具,操作简单,快速实现文件识别与传送。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

    CodeExpander
    CodeExpander

    CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。

    PinStack
    PinStack

    PinStack是一款轻量级的Windows平台剪贴板管理工具,优化您的剪贴板使用体验。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

    Mountain Duck
    Mountain Duck

    Mountain Duck 是一款能将多个网盘挂载到本地的工具,像本地磁盘一样使用网盘。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。

    Seer
    Seer

    Seer是一款在Win平台下的空格键功能增强效率工具,只需轻敲空格键,就能预览几乎任何格式的文件。它更适合把零散的小功能集中起来使用,处理高频琐碎任务时会更省事。