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

news2024/12/28 3:45:22

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/705141.html

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

相关文章

网工内推 | 运营商招网工,3年以上网安经验,CISP/CCIE认证优先

01 微算互联 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1、负责生产系统的网络管理、网络监控告警、网络设备数据资料备份/恢复容灾管理&#xff1b; 2、海外、tob 、私有云网络搭建及运维7 X 24小时值班&#xff1b; 3、负责业务系统工程网络层面规划、建设、升级…

Java之Javac、JIT、AOT之间的关系

Javac&#xff1a;javac 是java语言编程编译器。全称java compiler。但这时候还是不能直接执行的&#xff0c;因为机器只能读懂汇编&#xff0c;也就是二进制&#xff0c;因此还需要进一步把.class文件编译成二进制文件。 Java的执行过程 详细流程 结论&#xff1a;javac编译后…

使用Python调用aapt命令查看APK文件信息

以下演示内容在window的操作系统 1、下载 aapt 下载完成后注意配置环境变量&#xff01;&#xff01;&#xff01; 地址&#xff1a;https://www.mediafire.com/file/e8ww8wbgcowbti4/aapt 2、代码实现 import os import re import subprocess#获取当前操作系统 current_os o…

S型平滑函数功能块(CODESYS ST完整源代码)

S型平滑函数在多段曲线控温上的应用。完整算法介绍请参看下面文章博客: 带平滑功能的斜坡函数(多段曲线控温纯S型曲线SCL源代码+完整算法分析)_RXXW_Dor的博客-CSDN博客PLC运动控制基础系列之梯形速度曲线,可以参看下面这篇博客:PLC运动控制基础系列之梯形速度曲线_RXXW_…

RTL8720CF烧录工具

一、环境准备 1、 解压烧录工具包 AmebaZII_PGTool_v1.2.39.zip 2、 日志串口接串口调试助手 3、 模组A0脚接高电平 二、烧录 1、模组重新上电&#xff0c;串口有Download Image over …… 输出&#xff0c;表示模组已进入烧录模式&#xff0c;如图&#xff1a; 2、打开上…

springboot+vue校园一卡通管理系统_q7e7o

近些年来&#xff0c;随着科技的飞速发展&#xff0c;互联网的普及逐渐延伸到各行各业中&#xff0c;给人们生活带来了十分的便利&#xff0c;校园一卡通利用计算机网络实现信息化管理&#xff0c;使整个校园一卡通管理的发展和服务水平有显著提升。 本文拟采用java技术和Sprin…

【算法题】动态规划中级阶段之买卖股票的最佳时机、三角形最小路径和

动态规划中级阶段 前言一、三角形最小路径和1.1、思路1.2、代码实现 二、买卖股票的最佳时机 II2.1、思路2.2、代码实现 总结 前言 动态规划&#xff08;Dynamic Programming&#xff0c;简称 DP&#xff09;是一种解决多阶段决策过程最优化问题的方法。它是一种将复杂问题分解…

计算机网络————运输层

文章目录 概述UDPTCP首部格式 连接管理连接建立连接释放 概述 从IP层看&#xff0c;通信双方是两个主机。 但真正进行通信的实体是在主机中的进程&#xff0c;是这个主机中的一个进程和另一个主机中的一个进程在交换数据。 所以严格的讲&#xff0c;两个主机进行通信就是两个…

关于【系统学习】和【按需学习】我想说的

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;心得、闲聊、学习、知识☀️每日 一言&#xff1a;不要停驻不前&#xff0c;做一点点都要比什么都不做强上百倍&#xff01; 前言 说起来学习&#xff0c;那就离不开学习的方式。学生时期我们的…

SpringCloudAlibaba实战入门之RocketMQ消息发送(六)

本篇文章是承接上一篇文章《SpringCloudAlibaba实战入门之RocketMQ下载配置和启动(五)》,如果没有看过上一篇文章并按照指导配置和启动Rocket MQ的网友,请先阅读该篇文章以后再阅读本篇 一、创建spring-cloud-rocketmq项目 1、复制之前的项目模块新建一个项目模块,修改新…

5个有趣实用的小工具推荐,让你的生活更加丰富多彩

5个有趣实用的小工具推荐&#xff0c;让你的生活更加丰富多彩 在现代社交媒体和科技的发展中&#xff0c;我们可以利用各种小工具来增添生活的乐趣和便利。今天&#xff0c;我将向大家推荐一些有趣且实用的小工具&#xff0c;这些工具不仅能够让你的生活更加丰富多彩&#xff…

算法分析基础题目

第一章-算法概述 递归算法必须具备的两个条件是边界条件或停止条件和递推方程或递归方程冒泡排序时间复杂度是___&#xff0c;堆排序时间复杂度是___。 O ( n 2 ) O(n^2) O(n2), O ( n l o g n ) O(nlogn) O(nlogn)斐波那契数列的第1项为1&#xff0c;第2项为2&#xff0c;以…

Labview通过OPC与S1200通信

一、配置PC的IP地址 二、S7-1200的配置 通过博图&#xff0c;在PLC CPU的属 性-常规-保护里勾选“允许从 远程伙伴使用PUT/GET通信 访问 三、新建一个DB1数据块&#xff0c;在DB1里新建一个变量&#xff0c;例如 名称为“ASD”&#xff0c;类型为“Word” 四、右击“DB1”&…

全球项目管理软件排行榜揭晓:谁将问鼎榜首?

项目管理软件是一种能够帮助企业和组织有效规划、执行和监控项目的工具。这些软件通常具有任务分配、资源管理、时间跟踪、报告生成等功能&#xff0c;可以提高项目管理的效率和质量。 项目管理软件为企业带来的便利 使用项目管理软件可以帮助企业和组织更好地管理项目&#x…

基于UDP协议的千兆以太网传输(FPGA)

[TOC]基于UDP协议的千兆以太网传输&#xff08;FPGA&#xff09; 一、UDP协议概述 UDP协议是一种基于无连接协议&#xff0c;即发送端发送数据无需确认接收端是否存在&#xff1b;接收端收到数据后也无需给发送端反馈是否收到&#xff0c;所以UDP在数据发送过程中允许丢失一两…

学会Pointer指针事件 ,一套拖拽事件两端(PC端、移动端)跑

早期浏览器很low&#xff0c;它只存在鼠标事件(MouseEvent)。随时代的发展出现了智能手机、平板电脑等触屏设备&#xff0c;交互方式发生了变化&#xff0c;单纯的鼠标事件已不够开发人员使用了。于是引入了触摸事件(TouchEvent)。不过这还不够完美&#xff0c;没有把触控笔事件…

深度卷积神经网络(AlexNet)

目录 1.基础简介 1.1基础介绍 1.2基础架构 2.Alexnet与LeNet的对比 3.参考代码 4.李沐老师给出的例子 1.基础简介 1.1基础介绍 2012年&#xff0c;AlexNet横空出世。它首次证明了学习到的特征可以超越手工设计的特征。它一举打破了计算机视觉研究的现状。 AlexNet使用…

[洛谷]P1162 填涂颜色(搜索连通块)

关键思路转换&#xff1a;从边界为0开始搜索&#xff0c;并且都标记&#xff0c;这些标记的不会被1包围&#xff0c;被1包围的肯定0不会被标记到&#xff0c;所以到时候把没被标记的0就是变成2即可。 详细&#xff1a; ACcode: #include<bits/stdc.h> using namespace s…

SpringCloud(2) 注册中心Eureka、Nacos

目录 1.背景2.Eureka 注册中心3.Nacos 注册中心4.常见面试题1&#xff09;服务注册和发现是什么意思&#xff1f;Spring Cloud 如何实现服务注册发现&#xff1f;2&#xff09;Nacos 和 Eureka 有什么区别&#xff1f; 1.背景 注册中心是微服务中必须要使用的组件&#xff0c;…

JavaWeb 笔记——2

JavaWeb 笔记——2 一、Maven1.1、Maven概述1.2、Maven简介1.3、Maven基本使用1.4、IDEA配置Maven1.6、依赖管理&依赖范围 二、MyBatis2.1、MyBatis简介2.2、MyBatis快速入门2.3、解决SQL映射文件的警告提示2.4、Mapper代理开发 一、Maven 1.1、Maven概述 Maven是专门用于…