10、java程序流程控制之二:分支语句(switch-case结构)、循环结构(for循环)(经典案例)

java程序流程控制之二:

  • Ⅰ、分支语句:switch-case
    • 1、switch-case 分支结构:
      • 其一、描述:
      • 其二、代码为:
      • 其三、截图为:
    • 2、switch-case 分支结构的案例1:判断是否合格
      • 其一、描述:
      • 其二、方式一代码为:
      • 其三、方式一截图为:
      • 其四、方式二代码为:
      • 其五、方式二截图为:
    • 3、switch-case 分支结构的案例2:月日计算
      • 其一、描述:
      • 其二、代码为:
      • 其三、截图为:
    • 4、switch-case 分支结构的案例3:年月日计算
      • 其一、描述:
      • 其二、代码为:
      • 其三、截图为:
  • Ⅱ、循环结构:for 循环
    • 1、for 循环结构:
      • 其一、描述:
      • 其二、代码为:
      • 其三、截图为:
    • 2、for 循环结构的案例1:循环并按条件输出特定字符
      • 其一、描述:
      • 其二、代码为:
      • 其三、截图为:
    • 3、for 循环结构的案例2:可能存在的编译报错
      • 其一、描述:
      • 其二、代码为:
      • 其三、截图为:
    • 4、for 循环结构的案例3:求最大公约数和最小公倍数(以及break的使用)
      • 其一、描述:
      • 其二、代码为:
      • 其三、截图为:
  • Ⅲ、小结:

Ⅰ、分支语句:switch-case

1、switch-case 分支结构:

其一、描述:

分支结构之二:switch-case1.格式
switch(表达式){
case 常量1:执行语句1;//break;case 常量2:执行语句2;//break;...default:执行语句n;//break;}2.说明:
① 根据switch表达式中的值(一般是变量),依次匹配各个case中的常量。一旦匹配成功,则进入相应case结构中,调用其执行语句;当调用完执行语句以后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构末尾结束为止。② break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构;switch结构中的表达式(不再是条件表达式(即:只能是true/false)),只能是如下的6种数据类型之一:byteshortcharint、枚举类型(JDK5.0新增)String类型(JDK7.0新增)case 之后只能声明常量,不能声明范围;⑤ break关键字是可选的(即:根据实际情况来确定该不该加这个关键字);default:相当于if-else结构中的else;default结构是可选的(即:根据实际情况来确定该不该加这个关键字),而且位置是灵活的(即:可以放在任何位置且不影响最终输出的结果的前提是在 default 中用 break 关键字);

其二、代码为:

class SwitchCaseTest {public static void main(String[] args) {int number = 5;switch(number){case 0:System.out.println("zero");break;case 1:System.out.println("one");break;case 2:System.out.println("two");break;case 3:System.out.println("three");break;default:System.out.println("other");//break;}String season = "summer";switch (season) {case "spring":System.out.println("春暖花开");break;case "summer":System.out.println("夏日炎炎");break;case "autumn":System.out.println("秋高气爽");break;case "winter":System.out.println("冬雪皑皑");break;default:System.out.println("季节输入有误");break;}//**************如下的两种情况都编译不通过*********************//情况一: 表达式是布尔型(严格下的 float/double 类型);/*boolean isHandsome = true;switch(isHandsome){case true:System.out.println("我好帅啊~~~");break;case false:System.out.println("我好丑啊~~~");break;default:System.out.println("输入有误~~~");}*///情况二: case 之后只能声明常量,不能声明范围;/*int age = 10;switch(age){case age > 18:System.out.println("成年了");break;default:System.out.println("未成年");}*/}
}

其三、截图为:

在这里插入图片描述

2、switch-case 分支结构的案例1:判断是否合格

其一、描述:

例题:对学生成绩大于60分的,输出“合格”;   低于60分的,输出“不合格”;说明:如果switch-case结构中的多个case的执行语句相同,则可以考虑进行合并;

其二、方式一代码为:

// 在成绩为 78 时的输出结果为:及格;
class SwitchCaseTest1 {public static void main(String[] args) {int score = 78;switch(score / 10){case 0:case 1:case 2:case 3:case 4:case 5:System.out.println("不及格");break;case 6:case 7:case 8:case 9:case 10:System.out.println("及格");break;}}
}

其三、方式一截图为:

在这里插入图片描述

其四、方式二代码为:

// 在成绩为 78 时的输出结果为:及格;
class SwitchCaseTest1 {public static void main(String[] args) {int score = 78;//更优的解决方案:switch(score / 60){case 0:System.out.println("不及格");break;case 1:System.out.println("及格");break;}}
}

其五、方式二截图为:

在这里插入图片描述

3、switch-case 分支结构的案例2:月日计算

其一、描述:

编写程序:从键盘上输入2019年的“month”和“day”,要求通过程序输出输入的日期为2019年的第几天。2.15:  31 + 155.7: 31 + 28 + 31 + 30 + 7 ....说明: breakswitch-case中是可选的;

其二、代码为:

//输入月日,来计算某月某日是 2019 年的第几天;
import java.util.Scanner;class SwitchCaseTest2 {public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println("请输入2019年的month:");int month = scan.nextInt();System.out.println("请输入2019年的day:");int day = scan.nextInt();//定义一个变量来保存总天数int sumDays = 0;//方式一:冗余/*if(month == 1){sumDays = day;}else if(month == 2){sumDays = 31 + day;}else if(month == 3){sumDays = 31 + 28 + day;}else if(month == 4){sumDays = 31 + 28 + 31 + day;}//...else{//month == 12//sumDays = ..... + day;}*///方式二:冗余/*switch(month){case 1:sumDays = day;break;case 2:sumDays = 31 + day;break;case 3:sumDays = 31 + 28 + day;break;...}*/switch(month){case 12:sumDays += 30;case 11:sumDays += 31;case 10:sumDays += 30;case 9:sumDays += 31;case 8:sumDays += 31;case 7:sumDays += 30;case 6:sumDays += 31;case 5:sumDays += 30;case 4:sumDays += 31;case 3:sumDays += 28;case 2:sumDays += 31;case 1:sumDays += day;}System.out.println("2019年" + month + "月" + day + "日是当年的第" + sumDays + "天");}
}

其三、截图为:

在这里插入图片描述

4、switch-case 分支结构的案例3:年月日计算

其一、描述:

从键盘分别输入年、月、日,判断这一天是当年的第几天注:判断一年是否是闰年的标准:1)可以被4整除,但不可被100整除或2)可以被400整除说明:
1. 凡是可以使用switch-case的结构,都可以转换为if-else。反之,不成立。
不成立的原因:因为 switch 中的表达式有要求,浮点型,布尔型,范围值都做不了;
2. 我们写分支结构时,当发现既可以使用switch-case,(同时,switch中表达式的取值情况不太多),又可以使用if-else时,我们优先选择使用switch-case;原因:switch-case执行效率稍高;

其二、代码为:

//输入年月日,来计算某年某月某日是某年的第几天;
import java.util.Scanner;class SwitchCaseExer {public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println("请输入year:");int year = scan.nextInt();System.out.println("请输入month:");int month = scan.nextInt();System.out.println("请输入day:");int day = scan.nextInt();//定义一个变量来保存总天数int sumDays = 0;switch(month){case 12:sumDays += 30;case 11:sumDays += 31;case 10:sumDays += 30;case 9:sumDays += 31;case 8:sumDays += 31;case 7:sumDays += 30;case 6:sumDays += 31;case 5:sumDays += 30;case 4:sumDays += 31;case 3://sumDays += 28;//判断year是否是闰年if((year % 4 == 0 && year % 100 != 0 ) || year % 400 == 0){sumDays += 29;}else{sumDays += 28;}case 2:sumDays += 31;case 1:sumDays += day;}System.out.println(year + "年" + month + "月" + day + "日是当年的第" + sumDays + "天");}
}

其三、截图为:

在这里插入图片描述

Ⅱ、循环结构:for 循环

1、for 循环结构:

其一、描述:

For循环结构的使用一、循环结构的4个要素
① 初始化条件
② 循环条件  --->boolean类型
③ 循环体
④ 迭代条件二、for循环的结构
for(;;){}执行过程:① ------- ... -

其二、代码为:

class ForTest {public static void main(String[] args) {/*System.out.println("Hello World!");System.out.println("Hello World!");System.out.println("Hello World!");System.out.println("Hello World!");System.out.println("Hello World!");*/for(int i = 1;i <= 5;i++){//i:1,2,3,4,5System.out.println("Hello World!");//输出5个"Hello World!";}//i:在for循环内有效,出了for循环就失效了;//System.out.println(i);//练习://在部分四(即:迭代条件)中,有两个执行语句,而执行语句之间是通过 ',' 来连接;int num = 1;for(System.out.print('a');num <= 3;System.out.print('c'),num++){System.out.print('b');}//输出结果:abcbcbcSystem.out.println();//换行//例题:遍历100以内的偶数,输出所有偶数的和,输出偶数的个数int sum = 0;//记录所有偶数的和int count = 0;//记录偶数的个数for(int i = 1;i <= 100;i++){if(i % 2 == 0){System.out.println(i);//输出:1-100的偶数;sum += i;count++;}//System.out.println("总和为:" + sum);}System.out.println("总和为:" + sum);//2550System.out.println("个数为:" + count);//50}
}

其三、截图为:

在这里插入图片描述

2、for 循环结构的案例1:循环并按条件输出特定字符

其一、描述:

编写程序从1循环到150,并在每行打印一个值,
另外在每个3的倍数行上打印出“foo”,
在每个5的倍数行上打印“biz”,
在每个7的倍数行上打印输出“baz”。

其二、代码为:

class ForTest1 {public static void main(String[] args) {for(int i = 1;i <= 150;i++){System.out.print(i + "  ");//将i输出;if(i % 3 == 0){System.out.print("foo ");}if(i % 5 == 0){System.out.print("biz ");}if(i % 7 == 0){System.out.print("baz ");}//换行System.out.println();}}
}

其三、截图为:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3、for 循环结构的案例2:可能存在的编译报错

其一、描述:


在使用 for 循环的过程中,可能会遇到的编译报错:
其一、变量只声明而未赋值,编译报错;
其二、未初始化变量,编译报错;

其二、代码为:

class ReviewTest{public static void main(String[] args){//int sum;//for(int i = 1;i <= 100;i++){//	if(i % 2 != 0){//		System.out.println(i);//		sum += i;//	}//}//System.out.println(sum);//此时编译报错,因为 sum 只声明而未赋值,运算时报错;//报错点:sum += i 和 System.out.println(sum)//int sum;//for(int i = 1;i <= 100;i++){//	if(i % 2 != 0){//		System.out.println(i);//		sum = i;//	}//}//System.out.println(sum);//此时编译报错,因为 sum 只声明而未赋值,运算时报错;//报错点:System.out.println(sum)//int sum;//for(int i = 1;i <= 100;i++){//	if(i % 2 != 0){//		System.out.println(i);//		sum = i;//	}else{//	    sum = 1;//	}//}//System.out.println(sum);//此时编译报错,因为 sum 只声明而未赋值,运算时报错;//报错点:System.out.println(sum),可能尚未初始化变量sum,因为 for 循环可能进不去;int sum ;//for(int i = 1;i <= 100;i++){if(4 % 2 != 0){//System.out.println(i);sum = 1;}else{sum = 2;}//}System.out.println(sum);//2//此时编译就能过,因为 sum 肯定会被赋值,不会出现未被初始化的问题;}}

其三、截图为:

在这里插入图片描述

4、for 循环结构的案例3:求最大公约数和最小公倍数(以及break的使用)

其一、描述:

题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
比如:1220的最大公约数是4,最小公倍数是60。说明:break关键字的使用:一旦在循环中执行到break,就跳出循环

其二、代码为:

import java.util.Scanner;
class ForTest{public static void main(String[] args){Scanner scan = new Scanner(System.in);System.out.println("请输入第一个正整数:");int m = scan.nextInt();System.out.println("请输入第二个正整数:");int n = scan.nextInt();//获取最大公约数//1.获取两个数中的较小值int min = (m <= n)? m : n;//2.遍历for(int i = min;i >= 1 ;i--){if(m % i == 0 && n % i == 0){System.out.println("最大公约数为:" + i);break;//一旦在循环中执行到break,就跳出循环;}}//获取最小公倍数//1.获取两个数中的较大值int max = (m >= n)? m : n;//2.遍历for(int i = max;i <= m * n;i++){if(i % m == 0 && i % n == 0){System.out.println("最小公倍数:" + i);break;}}}
}

其三、截图为:

在这里插入图片描述

Ⅲ、小结:

其一、哪里有不对或不合适的地方,还请大佬们多多指点和交流!
其二、若有转发或引用本文章内容,请注明本博客地址(直接点击下面 url 跳转) https://blog.csdn.net/weixin_43405300,创作不易,且行且珍惜!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker数据管理和网络管理

文章目录 一、Docker数据管理Docker容器的分层哪些数据需要持久化容器数据持久保存方式数据卷&#xff08;data volume&#xff09;数据卷的使用场景数据卷的特点数据卷使用方法实际例子 二、网络管理Docker安装完成后默认的网络设置创建容器后的网络配置修改默认网络设置容器名…

“南禾”女士包网站的设计与实现----附源码17160

摘 要 随着社会经济的发展和人们生活水平的提高&#xff0c;女士包市场逐渐成为一个庞大的产业。女性消费者对于时尚、品质和个性化的追求&#xff0c;对于高品质、款式新颖的女士包需求不断增加。南禾作为中高端女士包品牌&#xff0c;为抓住了这一市场需求&#xff0c;为女性…

再见,Midjourney | FLUX 彻底改变了 AI 图像游戏

Flux 刚发布一周&#xff0c;大家都疯了&#xff01; 因为真的是分不清是AI还是真实啊&#x1f3f4;‍☠️ Flux生成 Flux生成 FLUX 彻底改变了 AI 图像游戏。 02 黑深林 Black Forest Labs由Stable Diffusion模型的原班人马创立&#xff0c;旨在开发并开源高质量的图像和…

AI技术加速落地 港科广联手思谋打开智能缺陷检测新纪元

AI 技术应用落地的元年&#xff0c;工业是主战场&#xff0c;尤其是工业缺陷检测。 在“生产制造-缺陷检测-工艺优化-生产制造”的智能制造闭环链条中&#xff0c;基于AI的智能缺陷检测扮演着“把关者”的角色。但这个把关者长期以来却缺少一个称手的工具——样本量大、精度高…

【Cadence22】将别人发的原理图和PCB库修改为自己的库,进而继续制图

【转载】Cadence Design Entry HDL 使用教程 【Cadence01】Cadence PCB Edit相对延迟与绝对延迟的显示问题 【Cadence02】Allegro引脚焊盘Pin设置为透明 【Cadence03】cadence不小心删掉钢网层怎么办&#xff1f; 【Cadence04】一般情况下Allegro PCB设计时的约束规则设置&a…

Firefox滚动条在Win10和Win11下表现不一致问题?

文章目录 前言总结解决方法 前言 最近在写页面的时候发现一个非常有意思的事。Firefox滚动条在Win10和Win11下表现居然不一致。在网上几经查找资料&#xff0c; 终于找到原因所在。总结成下面的文章&#xff0c;加深印象也防止下次遇到。 总结 参考文章&#xff1a; Firefox…

云快充协议1.5版本的充电桩系统软件

介绍 小程序端&#xff1a;城市切换、附近电站、电桩详情页、扫码充电、充电中动态展示、订单支付、个人中心、会员充值、充值赠送、联系客服&#xff1b; 管理后台&#xff1a;充电数据看板、会员管理、订单管理、充值管理、场站运营、文章管理、财务管理、意见反馈、管理员管…

VBA学习(25):从一个工作表复制数据到另一个工作表

今天演示一个简单的例子&#xff0c;也是经常看到网友问的问题&#xff0c;将一个工作表中的数据复制到另一个工作表。 如下图1所示&#xff0c;有3个工作表&#xff0c;需要将工作表“新数据#1”和“新数据#2”中的数据复制到工作表“汇总”中。其中&#xff0c;在“汇总”工…

【Web】LIT CTF 2024 题解(全)

目录 anti-inspect jwt-1 jwt-2 traversed kirbytime scrainbow anti-inspect 因为一直while true&#xff0c;网页会卡死无法访问 const flag "LITCTF{your_%cfOund_teh_fIg_94932}";console.log(flag,"background-color: darkblue; color: white; f…

Python办公自动化:使用`xlutils` 修改Excel文档

在日常办公自动化中&#xff0c;除了读取Excel文件&#xff0c;我们还经常需要对文件进行修改或更新。在Python中&#xff0c;除了xlrd&#xff0c;还可以使用xlutils库来实现对Excel文件的修改操作。本文将继续以“巴黎奥运会奖牌榜.xlsx”文件为例&#xff0c;讲解如何使用xl…

eNSP 华为浮动路由

R1&#xff1a; <Huawei>system-view [Huawei]sysname R1 [R1]int g0/0/0 [R1-GigabitEthernet0/0/0]ip add 172.16.1.1 24 [R1-GigabitEthernet0/0/0]int g0/0/1 [R1-GigabitEthernet0/0/1]ip add 10.10.1.1 24 [R1-GigabitEthernet0/0/1]quit [R1]vlan 10 //e口是…

配置Google API,用JavaScript和Python读取Google sheet里的数据

[发布时间是2024年8月。技术流程可能会存在一些变动] 开头提醒一下各位公司&#xff0c;国内包括腾讯云华为云阿里云&#xff0c;国外包括AWS和GCP&#xff0c;希望你们在开发产品的同时把这方面的文档写的更清楚明白一些。 现在&#xff0c;随着办公逐渐云化&#xff0c;从云…

Linux学习笔记11(计算机网络)

目录 网络七层模型/五层模型 IP地址分类 CIDR Centos7的网卡IP配置 RockyLinux9的网卡IP配置 网络七层模型/五层模型 自下到上 物理层&#xff1a; 建立物理连接&#xff0c;传输 0 和 1 的比特流 数据链路层&#xff1a; 物理地址寻址&#xff0c;流量控制&#xff0c;差错…

【redis】springboot 用redis stream实现MQ消息队列 考虑异常ack重试场景

redis stream是redis5引入的特性&#xff0c;一定程度上借鉴了kafka等MQ的设计&#xff0c;部署的redis版本必须 > 5 本文主要讲的是思路&#xff0c;结合简单的源码分析&#xff08;放心&#xff0c;无需深入大量源码&#xff09;&#xff1b;讲述在redis stream文档缺乏&a…

链表的奇偶节点重新排列及空指针问题分析【链表、空指针】

在处理链表问题时&#xff0c;重组链表节点是一种常见需求。本文将详细探讨如何在链表中将奇数索引节点放在偶数索引节点之前&#xff0c;并深入分析实现过程中的空指针问题及其解决方案。 1. 问题描述 给定一个单链表&#xff0c;要求将链表中的节点按照奇数索引节点在前、偶…

控制SD图片生成的神经网络模型--ControlNet

ControlNet 是一个通过添加额外条件来控制SD中图像生成的神经网络&#xff0c;可以使用 ControlNet 来做以下事情&#xff1a; 指定人体姿势。 从另一幅图像复制图片的构图。 生成参考图片类似的图像。 将涂鸦图片变成专业的图像。 ControlNet 是用于控制SD的神经网络模型…

8.8 哈希表简单 1 Two Sum 141 Linked List Cycle

1 Two Sum class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {//给的target是目标sum 要返回vector<int> res(2,0);是在num中找加数//首先假设每个输入都是由唯一的结果&#xff0c;而且不适用相同的元素两次一共有n*(n-1)种…

记录前后端接口使用AES+RSA混合加解密

一、前言 由于项目需求&#xff0c;需要用到前后端数据的加解密操作。在网上查找了了相关资料&#xff0c;但在实际应用中遇到了一些问题&#xff0c;不能完全满足我的要求。 以此为基础&#xff08;前后端接口AESRSA混合加解密详解&#xff08;vueSpringBoot&#xff09;附完…

2024.8.7(SQL语句)

一、回顾 1、主服务器 [rootslave-mysql ~]# yum -y install rsync [rootmaster-mysql ~]# yum -y install rsync [rootmaster-mysql ~]# tar -xf mysql-8.0.33-linux-glibc2.12-x86_64.tar [rootmaster-mysql ~]# ls [rootmaster-mysql ~]# tar -xf mysql-8.0.33-linux-glib…

Python大数据分析——SVM模型(支持向量机)

Python大数据分析——SVM模型&#xff08;支持向量机&#xff09; 认知模型介绍距离计算模型思想目标函数函数与几何间隔 线性可分SVM模型目标函数函数代码 非线性可分SVM模型目标函数函数代码 示例手写体字母识别森林火灾面积预测 认知模型 介绍 超平面的理解&#xff1a;在…