Java零基础教程——控制语句

news2024/11/17 16:22:40

目录

  • 程序流程控制
    • 顺序结构
    • 分支结构
      • if分支语句
    • 案例:
      • switch分支
    • 案例:
    • 循环结构
      • for循环
      • while循环
      • do-while循环
    • 跳转控制语句

程序流程控制

在这里插入图片描述

顺序结构

没什么好说的就是:程序默认执行流程(如下)

public class Test {
    public static void main(String[] args) {
        System.out.println("A");
        System.out.println("B");
        System.out.println("C");
    }
}

分支结构

分支语句,它通过对给定的条件进行判断,从而决定执行两个或多个分支中的哪一支。因此,在编写选择语句之前,应该首先明确判断条件是什么,并确定当判断结果为“真”或“假”时应分别执行什么样的操作/算法。在 Java 语言中选择语句主要提供了两个,一个是 if 语句,另一个则是 switch 语句。

if分支语句

根据判定的结果(真或假)决定执行某个分支的代码

If分支有三种格式

格式1:

if (条件表达式) {
    语句体;	
}

执行流程

  1. 首先判断条件表达式的结果,如果为true执行语句体,为 false 就不执行语句体。

注意:

  • if 语句中,如果大括号控制的只有一行代码,则大括号可以省略不写。
    在这里插入图片描述

格式2:

if (条件表达式) {
    语句体1;	
} else {
语句体2;	
}

执行流程:

  1. 首先判断条件表达式的结果,如果为true执行语句体1,为 false 就执行语句体2。

在这里插入图片描述

格式3:

if (条件表达式1) {
    语句体1;	
} else if (条件表达式2) {
    语句体2;	
} else if (条件表达式3) {
    语句体3;	
} 
. . .
else {
    语句体n+1;
}

执行流程:

  1. 先判断条件1的值,如果为true则执行语句体1,分支结束;如果为false则判断条件2的值
  2. 如果值为true就执行语句体2,分支结束;如果为false则判断条件3的值
  3. 如果没有任何条件为true,就执行else分支的语句体n+1。
    在这里插入图片描述

案例:

需求:键盘接收一个学生的成绩,范围在[0-100],根据成绩判断等级,[90-100]等级为“优秀”,[80-90)等级为“良好”,[70-80)等级为“中等”,[60-70)等级为“及格”,[0-60)等级为“不及格”,输入其它数字表示成绩不合法。

        Scanner scan = new java.util.Scanner(System.in);
        System.out.print("输入考试成绩:");
        int score = scan.nextInt();
        String grade = "不及格";
            if(score < 0 || score > 100){
                grade = "对不起,您输入的成绩不合法!";
            }else if(score >= 90){
                grade = "优秀";
            }else if(score >= 80){
                grade = "良好";
            }else if(score >= 70){
                grade = "中等";
            }else if(score >= 60){
                grade = "及格";
            }
            System.out.println("成绩等级:" + grade);

switch分支

匹配条件去执行分支, 适合做值匹配的分支选择,结构清晰,格式良好

switch(表达式){
    case1:
        执行代码...;
        break;
    case2:
        执行代码...;
        break;case 值n-1:
        执行代码...;
        break;
    default:
        执行代码n;
}

执行流程:

  1. 先执行表达式的值,拿着这个值去与case后的值进行匹配。
  2. 匹配哪个case的值为true就执行哪个case,遇到break就跳出switch分支。
  3. 如果case后的值都不匹配则执行default代码。

注:

  • if其实在功能上远远强大于switch。

  • if适合做区间匹配。

  • switch适合做:值匹配的分支选择、代码优雅。

  • 表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long。

  • case给出的值不允许重复,且只能是字面量,不能是变量。

  • 不要忘记写break,否则会出现穿透现象。
    在这里插入图片描述

案例:

需求:键盘接收一个学生的成绩,范围在[0-100],根据成绩判断等级,[90-100]等级为“优秀”,[80-90)等级为“良好”,[70-80)等级为“中等”,[60-70)等级为“及格”,[0-60)等级为“不及格”,输入其它数字表示成绩不合法。

 Scanner scan = new Scanner(System.in);
        System.out.print("请输入考试成绩[0-100]:");
        double score = scan.nextDouble();
        String grade = "不及格";
        switch((int)(score / 10)){
            case 10: case 9:
                grade = "优秀";
                break;
            case 8:
                grade = "良好";
                break;
            case 7:
                grade = "中等";
                break;
            case 6:
                grade = "及格";
                break;
        }
        System.out.println("成绩等级为:" + grade);

循环结构

for循环

  • 控制一段代码反复执行很多次。
格式:
for (初始化语句; 循环条件; 迭代语句)  {
  循环体语句(重复执行的代码);

}
// 输出3次HelloWorld
for (int i = 0; i < 3; i++) {
    System.out.println("Hello World");
}

执行的流程:

  1. 循环一开始,执行int i = 0 一次。
  2. 然后判断循环条件:0 < 3 返回true ,进入到循环体中执行输出 :helloWorld ,然后执行迭代语句i++ , 此时i=1了。
  3. 然后判断循环条件:1 < 3 返回true ,进入到循环体中执行输出 :helloWorld ,然后执行迭代语句i++ , 此时i=2了。
  4. 然后判断循环条件:2 < 3 返回true ,进入到循环体中执行输出 :helloWorld, 然后执行迭代语句i++ , 此时i=3了。
  5. 然后判断循环条件:3 < 3 返回false, 循环立即结束!!

在这里插入图片描述

while循环

格式
初始化语句;
while (循环条件) {    循环体语句(被重复执行的代码);
    迭代语句;
}

int i = 0;
while (i < 3) {
    System.out.println("Hello World");
    i++;
}

do-while循环

  • 先执行再判断循环条件。
初始化语句;
do {
    循环体语句;
    迭代语句;
} while (循环条件);

int i = 0;
do {
    System.out.println(Hello World!");
     i++;
} while( i < 3);

do-while循环的特点:一定会先执行一次循环体。
在这里插入图片描述

跳转控制语句

  • break : 跳出并结束当前所在循环的执行。
  • continue: 用于跳出当前循环的当次执行,进入下一次循环。

注:

break : 只能用于结束所在循环, 或者结束所在switch分支的执行。

continue : 只能在循环中进行使用。

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

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

相关文章

spring中bean的生命周期(简单5步)

目录 一、概念 1.生命是bean的生命周期&#xff1f; 2.知道bean生命周期的意义&#xff1f; 3.bean的生命周期按照粗略的五步 二、例子讲解 一、概念 1.生命是bean的生命周期&#xff1f; 答&#xff1a;spring其实就是管理bean对象的工厂&#xff0c;它负责对象的创建&…

[K8S]Kubernetes环境检测与API简介

文章目录环境判断docker环境检测K8S环境检测获取POD的NamespaceAPI Server概述API访问命令行方式编程方式REST API是Kubernetes系统的重要部分&#xff0c;组件之间的所有操作和通信均由API Server处理的REST API调用。环境判断 在使用API时&#xff0c;需要先判断是否是K8S环…

实施ITIL项目的十个参考步骤

ITIL是我们做好IT服务管理流程建设与治理的一个重要知识库&#xff0c;这个知识体系的内容非常丰富&#xff0c;做到全面领会并运用自如是比较困难的。因此&#xff0c;我们提供了这样的一份实施ITIL项目的参考步骤&#xff0c;在新建或治理企业IT管理流程时可以适当借鉴&#…

elasticsearch索引与搜索初步

ES支持cURL交互&#xff0c;使用http请求完成索引和搜索操作&#xff0c;最基本的格式如下&#xff1a;创建索引我们可以使用PUT方法创建索引&#xff0c;通过指定“索引”、“类型”、“文档ID”锁定文档&#xff0c;通过参数指定文档的数据。红色部分的路由分别指定了“索引”…

Homekit智能家居DIY一智能插座

WiFi智能插座对于新手接触智能家居产品更加友好&#xff0c;不需要额外购买网关设备 很多智能小配件也给我们得生活带来极大的便捷&#xff0c;智能插座就是其中之一&#xff0c;比如外出忘记关空调&#xff0c;可以拿起手机远程关闭。 简单说就是&#xff1a;插座可以连接wi…

【博客618】docker容器重启后读写层数据并不丢失的原理

docker容器重启后读写层数据并不丢失的原理 1、场景 当我们对docker容器执行restart后&#xff0c;其实容器中原本读写层里对临时数据还在。只有我们删除了这个容器&#xff0c;重新创建的容器是基于镜像的只读层然后挂载上新的空的读写层&#xff0c;此时临时数据是不在的 2、…

详解指针(2)(初阶版)

前言&#xff1a;内容包括&#xff1a;指针运算&#xff0c;指针和数组&#xff0c;二级指针&#xff0c;指针数组 详解指针&#xff08;1&#xff09;&#xff08;点击即跳转&#xff09; part 1&#xff1a;指针运算 1 指针-整数 以如下代码为例&#xff1a;初始化数组内容…

实验名称:经典同步问题:生成者与消费者问题

实验名称&#xff1a;经典同步问题&#xff1a;生成者与消费者问题 相关知识 信号量 信号量是用来协调不同进程间的数据对象&#xff0c;可用来保护共享资源&#xff0c;也能用来实现进程间及同一进程不同线程间的进程同步。分为二值信号灯和计算信号灯两种类型。 进程与线…

VOC数据增强与调整大小

数据增强是针对数据集图像数量太少所采取的一种方法。 博主在实验过程中&#xff0c;使用自己的数据集时发现其数据量过少&#xff0c;只有280张&#xff0c;因此便想到使用数据增强的方式来获取更多的图像信息。对于图像数据&#xff0c;我们可以采用旋转等操作来获取更多的图…

Android Dalvik虚拟机 堆初始化流程

前言 上篇文章介绍了dalvik虚拟机启动流程&#xff0c;在dalvik虚拟机启动时调用了dvmGcStartup来启动堆。 本文介绍我们在日常开发使用Java时的堆创建流程。 Dalvik堆介绍 Dalvik虚拟机中&#xff0c;堆是由heap[0] Active堆和heap[1] Zygote堆两部分组成的。其中&#xff…

13 Day:实现内核线程

前言&#xff1a;我们昨天完成了内核的内存池以及内存管理程序&#xff0c;今天我们要揭开操作系统多任务执行的神秘面纱&#xff0c;来了解并实现一个多任务的操作系统。 一&#xff0c;实现内核线程 在聊线程之间我们先聊聊处理器吧&#xff0c;众所周之现在我们的CPU动不动…

心跳太快对身体带来影响?4种方法来减速!

心脏每时每刻都在跳动&#xff0c;跳动时遵循一定的节律。正常情况下成年人每分钟心跳达到60~120下&#xff0c;若心跳每分钟大于120下&#xff0c;被判断为心动过速&#xff1b;若心跳每分钟不足50下&#xff0c;被判断为心动过缓&#xff0c;无论是哪种因素均会影响身体健康。…

详解Redisson分布式限流的实现原理

我们目前在工作中遇到一个性能问题&#xff0c;我们有个定时任务需要处理大量的数据&#xff0c;为了提升吞吐量&#xff0c;所以部署了很多台机器&#xff0c;但这个任务在运行前需要从别的服务那拉取大量的数据&#xff0c;随着数据量的增大&#xff0c;如果同时多台机器并发…

如何用Python打包好exe文件,并替换图标

前言 Python打包&#xff1f;打包exe文件&#xff1f;怎么操作&#xff1f; ok&#xff0c;今天我来分享分享&#xff0c;教你们如何打包号文件&#xff0c;顺便还来展示一下&#xff0c;如何替换好图标 首先把你的代码准备好&#xff0c;尽量不要中文路径&#xff0c;容易报…

flex 布局

设为 Flex 布局以后&#xff0c;子元素的float、clear和vertical-align属性将失效。 flex 和 inline-flexflex&#xff1a; 将对象作为弹性伸缩盒显示inline-flex&#xff1a;将对象作为内联块级弹性伸缩盒显示<style>.main {background-color: #0f0;display: flex; /*父…

【VictoriaMetrics】VictoriaMetrics启停脚本

先看结果,启动VictoriaMetrics UI界面可访问

有趣的Hack-A-Sat黑掉卫星挑战赛——定位卫星Jackson

国家太空安全是国家安全在空间领域的表现。随着太空技术在政治、经济、军事、文化等各个领域的应用不断增加&#xff0c;太空已经成为国家赖以生存与发展的命脉之一&#xff0c;凝聚着巨大的国家利益&#xff0c;太空安全的重要性日益凸显[1]。而在信息化时代&#xff0c;太空安…

图解LeetCode——剑指 Offer 53 - I. 在排序数组中查找数字 I

一、题目 统计一个数字在排序数组中出现的次数。 二、示例 示例 1 【输入】nums [5,7,7,8,8,10], target 8 【输出】2 示例 2: 【输入】nums [5,7,7,8,8,10], target 6 【输出】0 提示&#xff1a; 0 < nums.length < 10^5-10^9 < nums[i] < 10^9nums 是一…

基于Java+SpringBoot+SpringCloud+Vue前后端分离医院管理系统设计与实现

博主介绍&#xff1a;✌全网粉丝3W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建、毕业项目实战、项目定制✌ 博主作品&#xff1a;《微服务实战》专栏是本人的实战经验总结&#xff0c;《S…

一文总结 JUC 并发编程

文章目录一、JUC 并发编程二、协调锁1. Synchronized2. Synchronized 锁下线程通信3. Lock 锁4. Lock 锁实例 - ReentrantLock5. 读写锁 - ReadWriteLock三、CAS & 原子类1. CAS2. 原子类2.1 基础原子类2.2 数组类型原子类2.3 引用型原子类四、线程1. Callable 和 Future2.…