1.6、JAVA 分支结构 switch结构 for循环

news2024/11/18 7:30:36

1 分支结构

1.1 概述
顺序结构的程序虽然能解决计算、输出等问题
但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构

1.2 形式

在这里插入图片描述

1.3.1 练习:商品打折案例

创建包: cn.tedu.basic
创建类: TestDiscount.java
需求: 接收用户输入的原价。满1000打9折;满2000打8折;满5000打5折

package cn.tedu.basic;

import java.util.Scanner;

/**需求:接收用户输入的原价,满1000打9折,满2000打8折,满5000打5折*/
public class TestDiscount {
	public static void main(String[] args) {
		//1.提示用户输入原价
		System.out.println("请输入商品原价:");
		//2.接收用户输入的原价
		double price = new Scanner(System.in).nextDouble();                     
		//3.计算打折后的价格
		//3.1定义变量用来保存打折后的价格
		double count = price;//初始值是商品的原价
		//3.2判断用户的打折段位并打折
		if(price >= 5000) {//满5000
			count = price *0.5;//打5折
		}else if(price >= 2000) {//满2000
			count = price * 0.8;//打折8折
		}else if(price >= 1000) {//满1000
			count = price *0.9;//打9折
		}
//		if(1000 <= price && price< 2000) {
//			count = price *0.9;
//		}else if(2000 <= price && price < 5000) {
//			count = price * 0.8;
//		}else if(price >= 5000) {
//			count = price *0.5;
//		}
		//3.3输出用户实际支付的价格
		System.out.println("您实际应该支付:"+count);
	}
}

1.3.2 练习: 统计学员得分段位案例

package cn.tedu.basic;

import java.util.Scanner;

/*本类用于判断学员分数的档位*/
public class TestScore {
	public static void main(String[] args) {
		//1.提示并接收学员的分数
		System.out.println("请输入你的分数:");
		int score = new Scanner(System.in).nextInt();
		/*90分及以上  优秀
		 *80-89 良好
		 *70-79 中等
		 *60-69 及格
		 *60分及以下 不及格 */
		
		/**为了增强程序的健壮性,如果用户输入的数据不符合规则,就结束*/
		if(score <0 || score >100 ) {
			System.out.println("输入数据不合法,请重新输入!!!");
		}else {
			//2.判断分数的段位,并输出结果
			if(score >= 90) {//大于90
				System.out.println("优秀!");
			//}else if(score>=80 && score <=89) {
			}else if(score>=80) {//[80,90)
				System.out.println("良好!");
			}else if(score>=70) {//[70,80)
				System.out.println("中等!");
			}else if(score>=60) {//[60,70)
				System.out.println("及格!");
			}else {//小于60
				System.out.println("不及格!");
			}
		}	
	}
}

2 switch结构

2.1 概述
switch case 语句用来判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
当一个case成立,从这个case向后穿透所有case,包括default,直到程序结束或者遇到break程序才结束

2.2 形式

在这里插入图片描述

2.3 练习:数字匹配

创建包: cn.tedu.basic
创建类: TestSwitch.java

package cn.tedu.basic;
/*本类用于练习switch结构*/
/**总结:
 * 1.变量a的类型byte short char int String
 * 2.会拿着变量a的值依次与case后的值做比较,如果不加break,
 *        会向后穿透所有case,包括default
 * 3.如果设置了default“保底选项”,并且没有任何case匹配到的话,就执行default
 * 4.break与default是可选项,根据具体业务来决定加不加
 * */
public class TestSwitch {
	//1.创建程序的入口函数main
	public static void main(String[] args) {
		//2.定义一个变量
		int a = 19;
		//3.完成switch结构的测试
		switch(a) {
			case 1 : System.out.println(1);break;
			case 2 : System.out.println(2);break;
			case 3 : System.out.println(3);break;
			case 4 : System.out.println(4);break;
			case 5 : System.out.println(5);break;
			default : System.out.println(0);
		}		
	}
	
}

2.4 练习: Switch中的String类型

使用类: TestSwitch.java

package cn.tedu.basic2;
/**本类用来测试switch结构2*/
public class TestSwitch2 {
	public static void main(String[] args) {
		String day = "星期五";
		switch(day) {
			case "星期一" : System.out.println("星期一吃四川火锅");break;
			case "星期二" : System.out.println("星期二吃齐齐哈尔烤肉");break;
			case "星期三" : System.out.println("星期三吃新疆羊肉串");break;
			case "星期四" : System.out.println("星期四吃阳澄湖大闸蟹");break;
			case "星期五" : System.out.println("星期五吃兰州拉面");break;
			case "星期六" : System.out.println("星期六吃南昌拌粉");break;
			case "星期日" : System.out.println("星期日吃武汉藕汤");break;
			default : System.out.println("想吃点啥吃点啥吧~");
		}
	}
}

2.5 switch结构的注意事项

switch 语句中的变量类型可以是: byte、short、int 、char、String(jdk1.7以后支持)
switch 语句可以拥有多个 case 语句
每个 case 后面跟一个要比较的值和冒号,且此值的数据类型必须与变量的数据类型一致
当变量值与 case 语句值相等时,开始执行此case 语句的内容,执行完会判断此行代码是否有break,如果有,结束执行,如果没有,会继续向后执行穿透所有case,包括default
switch 语句可以包含一个 default 分支,该分支一般是写在switch 语句的最后
如果在default之前的case有break,则default不会执行

3 循环结构

3.1 for概述
循环结构是指在程序中需要反复执行某个功能而设置的一种程序结构。
它由循环体中的条件,判断继续执行某个功能还是退出循环。
根据判断条件,循环结构又可细分为先判断后执行的循环结构和先执行后判断的循环结构。

3.2 for形式

在这里插入图片描述

3.3 for循环执行顺序

我们明明只写了一句打印语句,为什么打印了多个数字呢?
希望通过下图帮你理解for循环的执行顺序:

在这里插入图片描述

3.4 练习:打印100次slogon/打印0到10/打印10到0/打印8,88,888,8888,

package cn.tedu.basic;
/**本类用来测试循环结构for循环*/
public class TestFor {
	public static void main(String[] args) {
		//需求:打印100次自己的宣言
		//for(开始条件;循环条件;更改条件){循环体;}
		for(int i = 1;i<=100;i++) {
			System.out.println(“又不是没那条件,干就完啦!”);
		}
		//需求:打印0到10
		//for(开始条件;循环条件;更改条件){循环体;}
		//0 1 2 3 4 5 6 7 8 9 10
		//从哪开始:0
		//到哪结束:10
		//怎么变化:+1 ++
		for(int i = 0;i<=10;i++) {
			System.out.println(i);
		}
		System.out.println("**********************");
		//需求:打印10到0
		//10 9 8 7 6 5 4 3 2 1 0
		//从哪开始:10
		//到哪结束:0
		//怎么变化:-1  --
		//for(开始条件;循环条件;更改条件){循环体}
		for(int i = 10 ;i >= 0;i--) {
			System.out.println(i);
		}
		//需求:打印8,88,888,8888,
		//8 88 888 8888
		//从何开始:8
		//到哪结束:8888
		//如何变化:*10+8
		for(int i =8 ; i <= 8888 ; i=i*10+8) {
			System.out.print(i+",");//使用的是print(),打印后不换行
		}
	}
}

3.5 练习:求[1,100]以内元素之和,偶数之和,偶数个数

package cn.tedu.basic;
/*本类用于测试for循环结构2*/
public class TestFor2 {
	public static void main(String[] args) {
		//m1();
		//m2();
		m3();
	}
	/*需求:求出1-100以内所有偶数的个数*/
	private static void m3() {
		//1.定义变量用来保存偶数的个数
		int count = 0;
		//2.创建循环,依次循环1-100范围内的数
		for(int i = 1;i<101;i++) {
			//3.过滤出来要统计个数的偶数
			if(i % 2 ==0) {//说明这是一个偶数
				//4.对偶数的个数进行累计
				//count = count +1;
				count++;
				//++count;
			}
		}
		//5.打印最终统计的个数
		System.out.println(count);
	}
	/*需求:求出1-100以内所有偶数的和*/
	private static void m2() {
		//1.定义变量用来保存最终求和的结果
		int sum = 0;
		//2.创建循环,依次循环1-100范围内的数
		for(int i = 1;i <101;i++) {
			//3.过滤出来需要累加的偶数
			if(i%2 == 0) {
			//if(i%2 == 1) {//过滤奇数
				//4.能进来,说明是偶数,累加
				sum = sum +i;
			}
		}
		//5.在for循环结束以后,打印所有偶数累加的和
		System.out.println(sum);
	}
	/*需求:求出1-100以内所有数的和*/
	private static void m1() {
		//1.定义一个变量用来保存求和的结果
		int sum = 0;
		//2.创建循环,依次循环1-100范围内的数
		for(int i = 1;i<=100;i++) {
			//3.将本轮循环到的数字累加到最终的结果中
			sum = sum + i;
		}
		//4.打印最终累加的结果
		System.out.println(sum);
	}
}

4 拓展
如果你想查看循环到底是什么执行的话,还可以使用工具:

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

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

相关文章

消息通知模块的设计原理

目录 介绍 一、数据库设计 公告消息记录应该全局唯一&#xff0c;还是为每个用户创建一条公告消息&#xff1f; 用MongoDB存储消息数据 1. 搞冷热数据分离&#xff0c;热数据定期归档 2. 冷数据存储一段时间后就销毁&#xff0c;释放存储空间 二、系统消息的发送与收…

肺癌的成因

中国医师协会 2023 年呼吸医师年会暨第二十二届中国呼吸医师论坛&#xff08;CACP 2023&#xff09;于 2023 年 6 月 15-18 日在大连如期举行。肺癌是我国目前发病率和死亡率最高的癌症&#xff0c;它的早期筛查和诊断十分关键。 丁香园呼吸时间特邀四川大学华西医院院长、呼吸…

软件测试报告办理解决方案分享,为什么要选择CMA认证或CNAS认可测试报告?

在进行软件测试时&#xff0c;合格的测试报告对于软件产品的质量保障至关重要。那么软件测试报告又该如何办理呢?软件企业为什么要选择CMA认证或CNAS认可的测试报告呢?因为CMA认证的测试报告和CNAS认可的测试报告都具有不可忽视的好处。 一、软件测试报告办理解决方案 1. 测…

我蒙了面试官一上来就说:请你介绍一下你测试过的项目

测试人员在找工作中&#xff0c;基本都会碰到让介绍项目的这种面试题&#xff0c;如何正确介绍自己的项目&#xff1f;需要做哪些技术准备&#xff1f; 今天这篇文章&#xff0c;围绕这些问题&#xff0c;跟大家一起聊一聊。 关于介绍自己的项目&#xff1f; 可以从以下几个方面…

赛效:如何将PDF文件分割成单页的PDF文档

1&#xff1a;打开wdashi点击PDF处理菜单里的“PDF分割”。 2&#xff1a;将本地PDF文件添加上去&#xff0c;在下方选择转换页码&#xff0c;在这里我们选择转换每一页。 3&#xff1a;点击右下角“开始转换”。 4&#xff1a;转换好后&#xff0c;点击绿色下载按钮将分割好的…

七、Docker安装MySQL/Tomcat/Redis等

学习参考&#xff1a;尚硅谷Docker实战教程、Docker官网、其他优秀博客(参考过的在文章最后列出) 目录 前言一、安装步骤二、Docker安装Tomcat2.1 搜索镜像2.2 拉取镜像2.3 查看镜像2.4 启动镜像&#xff08;端口映射&#xff09;2.5 停止容器2.6 移除容器 三、Docker安装MySQL…

23年下半年软考软件测评师难考吗?最近考虑要不要考?

软考中级难度是适中的&#xff0c;可以考啊&#xff01; 因为当代随着各种应用技术层出不穷&#xff0c;随着社会发展&#xff0c;需要大量的软件人才支持&#xff0c;同时软件的更新速度越来越快&#xff0c;市场竞争极其激烈。相关国际认证有微软的&#xff0c;Orical&#…

新西兰访问学者签证申请注意事项

新西兰是一个美丽而富有文化多样性的国家&#xff0c;许多学者都梦想着前往这里进行学术交流和研究。如果你计划申请新西兰的访问学者签证&#xff0c;以下是知识人网小编整理的一些你需要注意的事项&#xff1a; 1. 确认申请资格&#xff1a;在开始申请之前&#xff0c;确保你…

旧手机不要轻易扔掉,将其设置为无线网卡,不消耗流量

如果你有一部旧手机正在闲置着&#xff0c;或者正考虑要将其丢弃&#xff0c;那么请暂停一下。因为这个旧手机可以成为你的无线网卡&#xff0c;帮助你在家中或出行时实现更快的网络下载速度&#xff0c;而且毫不费流量。接下来&#xff0c;我将告诉你如何将旧手机变成无线网卡…

安装 Prometheus 指标存储 观测 dubbo /windows_exporter指标 windows 版本 其他系统换个语法思路一样

目录 下载 Prometheus 访问Prometheus Targets 发现服务 对应的 dubbo 指标就出来了 Dubbo脚手架生成个最简单的项目 导入 Prometheus 相关包 或者使用这个包即可 启动后就自动上报指标了 Windows_exporter or node_exporter 端口 9182 Prometheus 配置 windows_exp…

基于SpringBoot+vue的旧物置换网站设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

【产品应用】一体化步进电机在全自动纸张分切机的应用

全自动纸张分切机是现代印刷业中的重要设备之一&#xff0c;它能够将大的纸张切割成相同大小的小纸张&#xff0c;并具有高精度、高速度和高效率等优点。一体化步进电机作为全自动纸张分切机的重要部件&#xff0c;其应用对于提高设备的性能和稳定性具有重要意义。 01.设备简介…

【Java.SE】数组的练习

作者简介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a;Java.SE&#xff0c;本专栏主要讲解运算符&#xff0c;程序逻辑控制&#xff0c;方法的使用&…

Servlet从入门到精通

概述&#xff1a; Servlet&#xff08;Server Applet&#xff09;是Java Server的简称&#xff0c;称为小服务程序或服务网连接器&#xff0c;用Java编写的服务器端服务&#xff0c;具有独立于平台和协议的特性&#xff0c;主要功能在于交互式的浏览和生成数据&#xff0c;生成…

【Linux】线程同步(互斥锁和读写锁)

概念 线程同步是指多个线程之间协调和管理彼此的执行顺序&#xff0c;以避免竞态条件和不确定的结果。线程同步的目的是确保共享资源的正确访问和保护临界区的完整性。 作用 避免竞态条件&#xff1a;当多个线程同时访问和修改共享资源时&#xff0c;可能会导致竞态条件的发生…

初创企业办公室租赁现状

概述&#xff1a; 随着创业生态的不断发展&#xff0c;越来越多的初创企业开始涌现。租赁办公室是初创企业成立和运营的必要条件之一&#xff0c;然而&#xff0c;由于各种原因&#xff0c;租赁办公室对于初创企业来说仍然存在一些挑战和难点。本文将探讨初创企业租赁办公室的…

功能测试的技术

目录 前言&#xff1a; 1) 基于最终用户/系统测试 2) 等价测试 3) 边界值测试 4) 基于决策的测试 5) 备用流量测试 6) 临时测试 前言&#xff1a; 功能测试是软件测试中最常见的一种测试类型&#xff0c;它旨在验证系统的功能是否符合设计要求和预期行为。在进行功能测…

a==1a==2a==3 与 a===1a===2a===3如何实现?

前言 首先&#xff0c;我们来看个demo let a {value: 1,toString() {// console.log("toString")return this.value;} }看一下输出结果&#xff1a; console.log(a 1 && a 2 && a 3) // falseconsole.log(a 1 && a 2 && a …

PHP 旅游信息管理系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 旅游信息管理系统 是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为PHP APACHE&#xff0c;数据库 为mysql5.0&#xff0c;使用php语言开发。 …

nerf-studio初体验

前言 整个安装过程非常简单&#xff0c;运行得也很丝滑&#xff0c;最大的难点在于中文资料太少&#xff0c;英文看得头痛。本文也是参考了许多链接&#xff0c;有些链接比我写得详细多了&#xff0c;各位选择性看吧 安装 安装过程参考github链接&#xff0c;按顺序一步一步…