流程的控制

news2024/10/7 14:28:18

条件选择语句

我们一般将条件选择语句分为三类:

  • 单条件
  • 双条件
  • 多条件

本篇文章将分开诉说着三类。

单条件

单条件的语法很简单:

if (条件) {
        // 代码
    }

条件这里我们需要注意下,可以向里写入两种:

  • 布尔值
  • 布尔表达式

当然,格式也是至关重要的,养成良好的代码习惯是每位IT工作人员应该的,在这里我介绍四种不同的方式:

  • if (条件1 && 条件2) 【建议使用】
  • if (条件1 || 条件2) 【建议使用】
  • if (条件1 & 条件2) 【不推荐】
  • if (条件1 | 条件2) 【不推荐】

给大家一个例子:

if (3 > 2) {};

现在我们需要实现输入分数,若是及格,控制台打印及格, 若是不及格,程序结束:

import java.util.Scanner;

public class Demo05If {
    public static void main(String[] args) {
        // 1. 单条件
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的分数:");
        int i = scanner.nextInt();
        if(i >= 60) {
            System.out.println("及格!!!");
        }
    }
}
双条件

语法:

if (条件) {
	  // 满足条件的时候运行
	} else {
	  // 不满足条件的时候运行
	}

我们使用双条件就可以将单条件中的场景完善:

import java.util.Scanner;

public class Demo05If {
    public static void main(String[] args) {
        // 1. 单条件
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的分数:");
        int i = scanner.nextInt();
        if(i >= 60) {
            System.out.println("及格!!!");
        } else {
            System.out.println("继续努力!!!");
        }
    }
}
多条件

一般我们在很多场景下需要使用多条件类型的语句,例如在期末分析学生成绩时,若学生成绩在0-59是不及格,60-79是中等,80-89是良好,90往上是优等。
语法是:

	if(条件) {
	} else if (条件) {
	} else if (条件) {
	} else {	
	}

那么我们实现这个场景:

import java.util.Scanner;

public class Demo05If {
    public static void main(String[] args) {
        // 1. 单条件
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的分数:");
        int i = scanner.nextInt();
        if(i < 60) {
            System.out.println("不及格");
        } else if(i < 80){
            System.out.println("中等");
        } else if (i < 90) {
            System.out.println("良好");
        } else {
            System.out.println("优秀");
        }
    }
}
多条件嵌套

先画一个流程图:
image.png
我们介绍下多条件嵌套的语法:

 if () {
		if() {
		
		} else {
		
		}
    } else {
		if() {
		
		} else {
		
		}
    }

简单来说,就是为了满足需求,我们不得不在一个多条件的IF语句中加入多个IF语句来完成项目需求的实现,所以一般建议在使用多流程嵌套前先画一个流程图理清思路(别写到后面自己都不知道自己在写什么)。

import java.util.Random;

public class Demo06 {
    public static void main(String[] args) {
        // sex  age
        Random random = new Random();
        // 0(女) 1(男)
        int sex = random.nextInt(2);
        int age = random.nextInt(10) + 15;
        //三元运算符,若sex等于0,就打印"女";不等于0,就打印"男"
        System.out.println("性别:" + (sex == 0 ? "女" : "男") + " 年龄:" + age);
        if(sex == 0) {
            // 女的
            if(age < 20) {
                System.out.println("no");
            } else {
                System.out.println("yes");
            }
        } else {
            // 男的
            if(age < 22) {
                System.out.println("no");
            } else {
                System.out.println("yes");
            }
        }
    }
}

Switch选择语句

语法:

switch(变量) {
   case:
   		代码
   		break;
   case:
   		代码
   		break;
   case:
   		代码
   		break;
   default:
   		代码
   		break;
}

现在有一个场景:
学习计划的制定。周一到周五(每天的内容已经确定)。

  • 周一:java环境安装
  • 周二:变量
  • 周三:数据类型
  • 周四:条件判断
  • 周五:循环
  • 其他时间: 休息

写一个程序,用户输入星期几(1~7)。然后程序输出你要做的事情。
如果我们要用条件选择语句也可实现:

import java.util.Scanner;

public class Demo07 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入星期(1 ~7)");
        int week = scanner.nextInt();

        if(week == 1) {
            System.out.println("环境安装");
        } else if (week == 2) {
            System.out.println("变量");
        } else if (week == 3) {
            System.out.println("数据类型");
        } else if (week == 4) {
            System.out.println("条件判断");
        } else if (week == 5) {
            System.out.println("循环结构");
        } else  {
            System.out.println("休息");
        }
    }
}

但这里有些问题:

  • 条件不是一个范围,是一个固定的值
  • 判断的流程比较长

那么在这里就可以用到switch语句:

import java.util.Scanner;

public class Demo07 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入星期(1 ~7)");
        int week = scanner.nextInt();

        switch (week) {
            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;

        }
    }
}

我们需要注意break,一定要写上。
我们再看一个场景:输入月份然后获得对应的季节:

import java.util.Scanner;

public class Demo08 {
    public static void main(String[] args) {
        // 输入一个月份,得到对应的季节
        Scanner scanner = new Scanner(System.in);
        int i = scanner.nextInt();

        switch (i) {
            case 3:
            case 4:
            case 5:
                System.out.println("春");
                break;
            case 6:
            case 7:
            case 8:
                System.out.println("夏");
                break;
            case 9:
            case 10:
            case 11:
                System.out.println("秋");
                break;
            case 12:
            case 1:
            case 2:
                System.out.println("冬");
                break;
            default:
                System.out.println("未知月份");
                break;
        }
    }
}

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

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

相关文章

用一个实例看如何分享大量照片 Apache 批量处理和不到50行PHP代码

起因&#xff1a;20多人的同学聚会&#xff0c;有各人拍的照片、视频&#xff0c;包括手机、相机、无人机拍的&#xff0c;仅仅照片原图就已经超过3G了&#xff0c;如果加上视频就很快需要不小的外存了&#xff0c;如何分享和保存这些照片和和视频深究起来是有很多讲究的&#…

黑马集成电路应用开发入门课程

"黑马集成电路应用开发入门课程"旨在引导学员了解集成电路应用开发的基础知识和技能。课程内容涵盖集成电路原理、设计流程、应用开发工具等&#xff0c;通过实践项目和案例分析&#xff0c;帮助学员掌握集成电路应用开发的核心概念和方法&#xff0c;为未来在该领域…

构建第一个ArkTS应用之@卡片事件能力说明

ArkTS卡片中提供了postCardAction()接口用于卡片内部和提供方应用间的交互&#xff0c;当前支持router、message和call三种类型的事件&#xff0c;仅在卡片中可以调用。 接口定义&#xff1a;postCardAction(component: Object, action: Object): void 接口参数说明&#xff1…

Linux---Linux编译器-gcc与g++的使用

GCC是以GPL许可证所发行的自由软件&#xff0c;也是GNU计划的关键部分。GCC的初衷是为GNU操作系统专门编写一款编译器&#xff0c;现已被大多数类Unix操作系统&#xff08;如Linux、BSD、MacOS X等&#xff09;采纳为标准的编译器。 gcc是专门用来编译C语言的&#xff0c;而g是…

安装MySQL Sample Database

本文安装的示例数据库为官方的Employees Sample Database。 操作过程参考其安装部分。 在安装前&#xff0c;MySQL已安装完成&#xff0c;环境为Linux。 克隆github项目&#xff1a; $ git clone https://github.com/datacharmer/test_db.git Cloning into test_db... remo…

梯度提升决策树(GBDT)

GBDT&#xff08;Gradient Boosting Decision Tree&#xff09;&#xff0c;全名叫梯度提升决策树&#xff0c;是一种迭代的决策树算法&#xff0c;又叫 MART&#xff08;Multiple Additive Regression Tree&#xff09;&#xff0c;它通过构造一组弱的学习器&#xff08;树&am…

9.3 Go 接口的多态性

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

Flink的简单学习四

一 有状态计算 1.1 概念 1.状态;上一次计算的结果 2.需要基于上一个结果来进行计算&#xff0c;被称为有状态计算 1.2 未使用有状态计算 1.下面这个代码将相同的key发送到同一个task任务里面计算。就是因为这个导致了&#xff0c;明明之前没有输入b&#xff0c;但是输入b之…

算数运算符与表达式(打印被10整除的数)

打印100以内&#xff08;包含100&#xff09;能被10整除的正整数 #include <stdio.h>#define UPPER 100int main() {int i 1;while (i < UPPER)if (i % 10 0)printf("%d\n", i);return 0; } 自增运算符 i 用于递增变量 i 的值。在 while 循环中&#xf…

GPT-4欺骗人类的惊人成功率达99.16%!

PNAS重磅研究揭示&#xff0c;LLM推理能力越强欺骗率越高&#xff01;&#xff01; 此前&#xff0c;MIT的研究发现&#xff0c;AI在各类游戏中为了达到目的&#xff0c;不择手段&#xff0c;学会用佯装和歪曲偏好等方式欺骗人类。 GPT-4o深夜发布&#xff01;Plus免费可用&…

CANoe-Trace窗口无法解析SOME/IP报文、Demo License激活方式改变

1、Trace窗口无法解析SOME/IP报文 在文章《如何让CANoe或Wireshark自动解析应用层协议》中,我们通过设置指定端口号为SOME/IP报文的方式,可以让CANoe中的Trace窗口对此端口号的报文当成是SOME/IP报文进行解析。 Trace窗口就可以根据传输层端口号对payload数据按照SOME/IP协议…

system 和 exec 的区别

在 linux 中&#xff0c;使用 system 和 exec 都可以执行一个程序或者执行一个命令。两者的区别如下&#xff1a; system 中创建了一个子进程&#xff0c;在子进程中执行用户的命令&#xff0c;子进程执行完毕之后&#xff0c;system 会返回。exec 不会创建子进程&#xff0c;…

深入Llama2:掌握未来语言模型的秘密

Llama2是一个基于Transformer架构的大型语言模型&#xff0c;它旨在处理和理解大规模的文本数据。作为技术人员&#xff0c;了解Llama2的工作原理、模型结构和训练方法对于有效利用该模型至关重要。本文将详细介绍Llama2的基本概念、主要作用、使用方法及注意事项。 一、简介 …

msvcr120.dll丢失怎样修复?为什么msvcr120.dll文件很重要

msvcr120.dll​ 是一个属于 Microsoft Visual C 2013 Redistributable package 的动态链接库文件。这个文件对于运行使用 Visual Studio 2013 开发的应用程序是必要的&#xff0c;因为它包含了C运行时库的一部分功能&#xff0c;这些功能是标准C库中与输入/输出操作、字符串操作…

MySQL的PrepareStatement真的是预编译语句么?

PrepareStatement真的是预编译语句么&#xff1f; ChatGPT对PrepareStatement的定义是&#xff1a; PrepareStatement 是 Java 数据库连接&#xff08;JDBC&#xff09;API 中用于执行预编译 SQL 语句的接口。通过使用 PreparedStatement&#xff0c;可以预编译 SQL 语句&…

66. UE5 RPG 实现远程攻击武器配合角色攻击动画

在制作游戏中&#xff0c;我们制作远程攻击角色&#xff0c;他们一般会使用弓箭&#xff0c;弩&#xff0c;弹弓等武器来进行攻击。比如你使用弓箭时&#xff0c;如果角色在播放拉弓弦的动画&#xff0c;但是弓箭武器没有对应的表现&#xff0c;会显得很突兀。所以&#xff0c;…

小白都可以通过U盘重装系统,再也不用花50块钱去安装系统啦

下载Ventoy 软件 1、今天带着大家通过Ventoy 安装Windows 11 系统。 2、首先我们通过官网如下地址&#xff1a;https://www.ventoy.net/cn/&#xff0c;找到我们对应系统的Ventoy 软件安装包。 3、通过官网可以找到软件包的地址地址&#xff0c;如下图所示。 4、如下就是我下…

Nginx的https功能和防盗链

目录 一.HTTPS功能简介 二.https自签名证书 三.防盗链 一.HTTPS功能简介 Web网站的登录页面都是使用https加密传输的&#xff0c;加密数据以保障数据的安全&#xff0c;HTTPS能够加密信息&#xff0c;以免敏感信息被第三方获取&#xff0c;所以很多银行网站或电子邮箱等等安…

clickHouse实现表自增ID的代码及相关逻辑

一、介绍 clickHourse表自增ID主要时两种方式&#xff1a; insert数据时&#xff0c;手动维护一个全局ID给表设置uuid字段&#xff0c;使用 generateUUIDv4()函数赋予默认值。 这里的话推荐手动维护一个全局的自增ID&#xff0c;不推荐使用UUID的方式&#xff0c;主要原因有…

java —— 线程(一)

一、进程与线程 一个进程可以包含一个以上的线程&#xff0c;CPU 时间片切换的基本单位是线程。 二、创建线程 &#xff08;一&#xff09;继承 Thread 类 public class Task extends Thread{Override //重写run方法public void run(){System.out.pr…