JAVA中的语序

news2024/11/29 10:35:31

目录

1. 顺序

2. 分支

2.1 if语句

2.1.1 单一条件的if语句

2.1.2 if-else语句

 2.1.3 多层if-else语句

2.2 switch语句

3. 循环

3.1 for循环

3.2 while循环

3.3 do-while循环

3.4 break和continue


语序即代码运行的顺序,主要分为三种,顺序、分支和循环。

1. 顺序

顺序结构是一种最基本的程序控制结构,指的是程序中的代码按照从上到下的顺序依次执行。所有的代码行都会被逐行执行,除非遇到控制结构(如条件判断或循环)改变了这一顺序。常用于简单的任务,如变量声明、赋值、算术操作、输入输出等基本操作。

例如自我介绍

public class DemoNew {
    public static void main(String[] args){
        System.out.println("大家好");
        System.out.println("我的名字叫xxx");
        System.out.println("来自xxx");
    }
}

结果为连续的三句话

2. 分支

分支主要用到if和switch语句,根据特定条件执行不同的代码块。

2.1 if语句

2.1.1 单一条件的if语句

这种形式用于在某个条件执行某个代码块。如果条件为,则跳过该代码块。

格式为

if(条件){

        //条件为真时执行的代码

}

例如

import java.util.Scanner;

public class DemoNew {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个数字:");
        int num=sc.nextInt();
        //判断数字是否大于2
        if(num>2){//数字大于2则为true,if执行括号内的内容,否则跳过if语句
            System.out.println("数字大于2");
        }
        System.out.println("判断结束");
    }
}

结果为

但是实际运用中,一般可能需要几种情况,我们可以用多个if语句。

2.1.2 if-else语句

这种形式在条件为时执行一个代码块,为时执行另一个代码块。

格式为

if (条件) {
    // 当条件为真时执行的代码
} else {
    // 当条件为假时执行的代码
}
 

这里要注意的是if和else的代码块肯定有一个一定要执行,毕竟条件要么为true,要么为false。

我们对上面代码改良

import java.util.Scanner;

public class DemoNew {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个数字:");
        int num=sc.nextInt();
        //判断数字是否大于2
        if(num>2){//数字大于2则为true,if执行括号内的内容
            System.out.println("数字大于2");
        }else{//否则为false,执行else括号里的内容
            System.out.println("数字小于等于2");
        }
        
    }
}

 2.1.3 多层if-else语句

这种形式用于检查多个条件。每个条件依次检查(顺序),如果某个条件为真,则执行对应的代码块,并跳过后续的检查。如果所有条件都为假,则执行else代码块。

if (条件1) {
    // 当条件1为真时执行的代码
} else if (条件2) {
    // 当条件2为真时执行的代码
} else {
    // 当所有条件都为假时执行的代码
}

我们举一个例子(要求输入1-5内的任意一个整数,输出其大写形式) :

import java.util.Scanner;

public class DemoNew {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个数字:");
        int num=sc.nextInt();
        if(num==1){
            System.out.println("一");
        }else if(num==2){
            System.out.println("二");
        }else if(num==3){
            System.out.println("三");
        }else if(num==4){
            System.out.println("四");
        }else if(num==5){
            System.out.println("五");
        }else{//输入的不属于1-5之间的任意一个整数
            System.out.println("输入不合法");
        }
    }
}

当输入为1、2、3、4、5,都会打印出对应的大写形式,否则就会输出"输入不合法"。但是这样的话,if-else语句太多了。

2.2 switch语句

switch语句用于执行多分支选择的控制结构,适用于基于单个变量的多重条件判断。

switch (表达式) {//表达式必须是一个可计算为整数、字符串、枚举、字符等类型的值
    case 情况1://情况用于和表达式的值进行比较,只有相同才能执行情况1所对应的代码
        // 当表达式等于 value1 时执行的代码
        break;/*用于跳出switch语句,如果省略,则将一直往下进行,直到运行下一个break或                     者到switch的右大括号*/
    case 情况2:
        // 当表达式等于 value2 时执行的代码
        break;
    // 可以有多个 case 子句
    default://default子句是可选的,当上述情况都不符合,就会执行default子句当中的代码
        // 当表达式不等于任何一个 case 的值时执行的代码
}

我们将2.1.3涉及到的代码用switch进行重写,如下:

import java.util.Scanner;

public class DemoNew {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个数字:");
        int num=sc.nextInt();
        switch(num){
            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;
            default:
                System.out.println("输入不合法");
        }
    }
}

为了让大家了解break的用处,提出一个新的问题。(假设我们有一个程序需要判断某天是工作日还是周末,并输出相应的消息。周一到周五都是工作日,而周六和周日是周末。)

import java.util.Scanner;

public class DemoNew {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入星期几:");
        int day=sc.nextInt();
        switch (day) {
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
                System.out.println("今天是工作日");
                break;
            case 6:
            case 7:
                System.out.println("今天是周末");
                break;
            default:
                System.out.println("输入无效");
                break;
        }
    }
}

无论输入1-5之间的哪个数字,都会打印出‘今天是工作日’,因为代码共享。这个代码还可以改良,利用case后可以放多个值的特性。

import java.util.Scanner;

public class DemoNew {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入星期几:");
        int day=sc.nextInt();
        switch (day) {
            case 1,2,3,4,5:
                System.out.println("今天是工作日");
                break;
            case 6,7:
                System.out.println("今天是周末");
                break;
            default:
                System.out.println("输入无效");
                break;
        }
    }
}

但是关于switch有很多注意事项

1.每个case的值必须是唯一常量表达式,不能是变量或动态计算的值。

2.如果没有break,则会发生“贯穿”,执行下一个case的代码。因此,如果你不需要“贯穿”,务必在每个case后使用break。

3.default虽然是可选的,但强烈建议使用,以便处理任何未匹配的情况。

4.swtich只适合确定的离散值选择,当涉及到范围时,if-else更适合。

在最新版的switch中,增加了几个功能。

1.case语法变为case值->表达式且默认自带break;例如case 1-> System.out.println("今天是工作日");

2.表达式形式的switch允许你将swtich的结果赋值给一个变量,但switch里面的case返回的得是常量,且和变量的类型相同。

例如

String dayName = switch (day) {
    case 1 -> "Monday";
    case 2 -> "Tuesday";
    case 3 -> "Wednesday";
    case 4 -> "Thursday";
    case 5 -> "Friday";
    case 6 -> "Saturday";
    case 7 -> "Sunday";
    default -> "Invalid day";
};

System.out.println(dayName);

3.yield可以返回值。

String dayName = switch (day) {
    case 1 -> "Monday";
    case 2 -> "Tuesday";
    case 3 -> {
        System.out.println("Midweek day");
        yield "Wednesday";
    }
    case 4 -> "Thursday";
    case 5 -> "Friday";
    case 6 -> "Saturday";
    case 7 -> "Sunday";
    default -> {
        System.out.println("Invalid day");
        yield "Unknown";
    }
};

3. 循环

循环允许在满足特定条件的情况下重复执行一段代码。

3.1 for循环

格式为

for (初始化语句; 循环条件表达式; 更新语句) {
    // 循环体代码
}

初始化语句:在循环开始时执行一次。通常用于声明和初始化循环变量。

循环条件表达式:每执行一次循环就判断一次,如果是true,则继续循环,否则就跳出for循环。

更新语句:用来更新初始化的变量,防止一直循环,每执行一次for循环,变量就更新一次。

例如按顺序输出1-5之间的整数:

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

共执行5次,i从1到5,当运行到第六次时,i>5,为false,跳出for循环。

此外在for循环里定义的变量,离开for循环后变得没有意义。

3.2 while循环

while循环在每次迭代之前检查条件表达式的结果,并在条件为true时执行循环体内的代码。

while (循环条件表达式) {
    // 循环体代码
}

循环条件表达式:每次循环开始前进行判断。如果条件为true,则执行循环体代码;如果条件为false,则退出循环。

和for循环的区别就在于,当面临不知道要运行多少次而只知道最后要满足什么条件时,while循环更适合。 

例如上面那个例子可以改写为:

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

值得注意的是while的循环条件表达式里面的变量的值要更新,防止陷入死循环,更新过程在while中,且在while循环之前定义,不然无法使用。

3.3 do-while循环

和while循环有一点区别,do-while循环在执行循环体代码之前不会检查条件,而是在每次循环之后检查条件,即至少运行一次。

格式为:

do {
    // 循环体代码
} while (循环条件表达式);

适合于那些需要确保至少进行一次操作的场景,总体不太实用。 

3.4 break和continue

break用于立即退出当前循环(包括for、while 和do-while循环)或switch语句。它会跳出循环体并继续执行循环后的代码。break语句可以用来提前结束循环,通常用于满足某个特定条件时停止循环。

例如输出1-10之间的数字,但是遇到5就退出循环:

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

其实if里的条件表达式可以加入到while中。

continue用于跳过当前循环中的剩余代码,并开始下一次循环迭代。continue语句不会退出循环,而是直接跳过当前迭代剩余的部分,回到循环条件判断部分。不能用于switch部分。

例如输出1-10之间的数字,但不输出3的倍数:

public class DemoNew {
    public static void main(String[] args){
        int i=1;
        while(i<=10){
            if(i%3==0) {//是3的倍数就跳出本轮循环,但还是要更新数据
                i++;
                continue;
            }
            else{
                System.out.println(i);
                i++;
            }
        }
    }
}

此外break和continue都只能退出最内层的循环。

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

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

相关文章

Java数组怎么转List,Stream的基本方法使用教程

Stream流 Java 的 Stream 流操作是一种简洁而强大的处理集合数据的方式,允许对数据进行高效的操作,如过滤、映射、排序和聚合。Stream API 于 Java 8 引入,极大地简化了对集合(如 List、Set)等数据的处理。 一、创建 Stream 从集合创建: List<String> list = Ar…

C#用户控件usercontrol中的子控件事件及属性的传递

也不知道这个标题怎么写&#xff0c;但是问题是个老问题&#xff0c;大家都可能遇到过&#xff0c;不过有同学问到&#xff0c;那就写出来。其实很简单。只不过有的同学看了其他博文后脑子还是懵懵的。所以这里就分两部分来说明一下。 文章目录 一、属性的传递1、原理2、步骤3…

一个实验带你全面学废网络OSPF协议内容

文章目录 一、OSPF实验与原理1. 多区域与虚链路配置及原理2. OSPF区域与接口认证的方法3. OSPF的Cost 值的作用4. 明白OSPF引入缺省、直连路由、宣告路由方法5. 描述OSPF区域间路由汇总和外部路由汇总6. 描述OSPF的5种类型的LSA区别&#xff0c;以及作用7. 控制OSPF的DR与BDR选…

微信小程序——弹出隐私指引教程(含代码)

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

【echarts】ECharts 解决地图标签重叠问题的技术实践

ECharts 解决地图标签重叠问题的技术实践 在使用 ECharts 绘制地图时&#xff0c;遇到的一个常见问题是某些地区的名称标签会因为地理位置接近而出现重叠&#xff0c;导致可读性变差。为了提升地图的展示效果&#xff0c;确保每个地区的名称都能清晰可见&#xff0c;我们可以通…

Java语言程序设计——篇十五(4)

&#xff1a; &#x1f33f;&#x1f33f;&#x1f33f;跟随博主脚步&#xff0c;从这里开始→博主主页&#x1f33f;&#x1f33f;&#x1f33f; 欢迎大家&#xff1a;这里是我的学习笔记、总结知识的地方&#xff0c;喜欢的话请三连&#xff0c;有问题可以私信&#x1f333;…

亦菲喊你来学习之机器学习(7)--逻辑回归内下采样

文章目录 下采样优缺点下采样步骤总结 下采样 在逻辑回归中&#xff0c;下采样是一种处理数据不平衡问题的方法&#xff0c;特别是在处理二分类问题时&#xff0c;如果某一类的样本数量远多于另一类&#xff0c;就可能导致模型偏向于多数类&#xff0c;从而忽略了少数类的特征…

基于推荐算法的景点攻略网站的设计与实现---附源码130855

摘 要 21世纪时信息化的时代&#xff0c;几乎任何一个行业都离不开计算机&#xff0c;将计算机运用于旅游景点分享也是十分常见的。过去使用传统广告方式对旅游景点进行推荐分享&#xff0c;造成了流程繁琐、难以维护&#xff0c;难于进准推荐给适合需求的人群等问题&#xff0…

java15-网络编程

一 网络编程概述 1.1 网络编程简介 其实&#xff0c;所谓的网络编程&#xff0c;就是编写程序&#xff0c;实现让同一个网络中的机器实现数据的传递&#xff0c;实现通信。 Java是 Internet 的语言&#xff0c;它从语言级上提供了对网络应用程序的支持。 Java提供的网络类库&a…

注册Github账号详细过程

目录 一、准备工作 二、注册步骤 一、准备工作 在注册GitHub账号之前&#xff0c;请确保您已经准备好以下信息&#xff1a; 一个有效的电子邮箱地址&#xff1a;用于接收验证邮件和GitHub的后续通知。 用户名&#xff1a;确保该用户名在GitHub上是唯一的&#xff0c;且符合…

如何选择合适的端口管控软件

一、明确需求 管控的端口类型&#xff1a;首先确定需要管控的端口类型是USB端口&#xff0c;还是需要同时管控串口、并口等其他类型的端口。 管控的力度&#xff1a;确定是需要对所有端口进行统一管控&#xff0c;还是需要根据不同的用户或部门实施不同的策略。 日志记录需求…

图神经网络教程1-综述

目录 前言 介绍 贡献 分类 预备知识 学习方式 转导式学习 归纳学习 系列文章列表 前言 翻译自A Practical Tutorial on Graph Neural Networks&#xff0c;并给出详细的解释和注意事项以及个人的思考&#xff0c;原作者如下&#xff1a; 介绍 当代人工智能(AI)&#x…

最佳实践:CI/CD交付模式下的运维展望丨IDCF

李洪锋 启迪万众数字技术(广州)有限公司 &#xff0c;产品研发中心-系统运维部、研发效能&#xff08;DevOps&#xff09;工程师&#xff08;中级&#xff09;课程学员 一、DevOps现状 据云计算产业联盟《中国DevOps现状调查报告2023》显示&#xff0c;国内DevOps 落地成熟度…

JUC阻塞队列(四):DelayQueue

1、DelayQueue介绍 DelayQueue 是一个延迟队列&#xff0c;生产者写入一个数据&#xff0c;这个数据具有被直接消费的延迟时间&#xff0c; 让数据具有延迟的特性。 DelayQueue底层也是基于二叉堆来实现的&#xff0c;DelayQueue本就是基于PriorityBQueue 实现的。 二叉堆结构每…

NCL画出来的图模糊问题处理

问题介绍&#xff1a; 如图所示&#xff0c;NCL画出来的图分辨率比较低&#xff0c;图片比较模糊&#xff0c;怎么将分辨率提高&#xff1f; 解决方法&#xff1a; ; 采用这个方法来定义wkswks_type "png"wks_typewkWidth 2500wks_typewkHeight 2500wks gsn_…

网易、网易互娱、360、头条、商汤等公司面试真题....

测试岗/测试开发岗面试真题 来源与网易、网易互娱、360、头条、商汤等公司面试真题 自我介绍 项目中负责什么? 团队几个人&#xff1f;合作情况 为什么要读研 项目/实习介绍 项目中负责什么? 团队几个人&#xff1f;合作情况 项目的方法怎么改进&#xff0c;和别人方…

微信为什么会限制加好友?

微信限制加好友主要是为了防止垃圾信息和滥用行为&#xff0c;包括以下几个原因&#xff1a; 1、防止骚扰&#xff1a;限制加好友可以减少陌生人骚扰和垃圾广告。 2、保护用户隐私&#xff1a;控制好友请求能更好地保护用户的个人信息。 3、提升用户体验&#xff1a;避免用户…

用博达网站群管理平台设计网站时如何创建二级导航

1 介绍 现用博达网站群管理平台设计出的网站只能一级导航&#xff0c;亦即点击首页的顶端导航&#xff0c;直接出现列表页&#xff0c;无法出现二级菜单。二级菜单在网站开发中被称为二级导航。 怎样用博达网站群管理平台制作出二级导航的效果&#xff1f;这个问题在《网站群…

掌握电子邮件的艺术:使用 Mailbird 统一管理您的数字生活

在数字时代&#xff0c;电子邮件已成为我们沟通的骨干。无论是商务交流、家庭联络&#xff0c;还是订阅更新&#xff0c;我们几乎每天都在使用电子邮件。但随着账户数量的增加&#xff0c;管理这些账户变得日益复杂。如何有效地整合和优化您的电子邮件体验&#xff1f;Mailbird…

Arduino调试ESP32常见问题 exit status 1

问题1&#xff1a;代码上传&#xff08;烧录&#xff09;报Failed uploading: uploading error: exit status 1大概率原因&#xff1a;没有安装对应的驱动&#xff0c;我的ESP32驱动是CH340点击这里下载CH340 下载后打开&#xff0c;若出现乱码不用在意&#xff0c;点击第一个按…