11、Java中的分支语句
Java中的分支语句
作者:韩茹
公司:程序咖(北京)科技有限公司
程序咖:IT职业技能评测平台
网址:https://www.chengxuka.com
任务
1.程序的执行结构
2.分支语句
3.if语句
4.switch语句
一、程序的执行结构
程序的执行,包括以下三种结构,默认是顺序结构。就是一行一行的逐行执行。
- 顺序结构
- 选择结构
- 循环结构
1.1 顺序结构
程序从上到下一行一行的执行代码,没有判断和中转。
执行完代码段1,就执行代码段2。
1.2 分支结构
有选择性的执行或者跳过指定代码
1.3 循环结构
循环条件满足,某些代码会被反复多次的执行。
二、分支结构
本小节我们主要来学习分支结构。在Java语言中,分支结构,有2种语法支持,一种是if语句,一种是switch语句。我们先来看一下if语句。
2.1 if语句
if语句有四种使用形式:
if(条件){…}
if(条件){…}else{…}
if(条件){…}else if(条件){…}else{…}
if(条件){ if(条件){…} } else {…}
2.1.1 简单if语句
if (/* 条件判断 true or false */) {// 条件结果为true执行大括号以内的语句
}
/*
执行流程:代码运行到if分支结构,首先判断if之后的条件是否为true,如果为true,执行大括号里面的语句,如果为false直接执行大括号之外的语句,
*/
流程图:
示例代码:
import java.util.Scanner;public class Demo22If {public static void main(String[] args) {/** if (条件判断 true or false ) { // 条件结果为true执行大括号以内的语句* * }* * 执行流程: 代码运行到if分支结构,首先判断if之后的条件是否为true,如果为true,执行大括号里面的语句,* 如果为false直接执行大括号之外的语句,* */// 1.定义一个成绩,如果大于等于60,打印及格int score = 88;if (score >= 60) {// 条件结果为true执行大括号以内的语句System.out.println("及格。。");}System.out.println("over....");//2.定义一个整数,如果大于0,打印正数System.out.println("请输入一个整数:");Scanner scan =new Scanner(System.in);int num = scan.nextInt();if(num > 0){System.out.println(num + ",是正数。。");}System.out.println("over.........");}}
运行结果:
示例代码:java成绩如果大于60,奖励一颗糖
//简单的if语句://成绩如果大于60 给奖励int score = 10;if(score>60){System.out.println("给颗糖");}
示例代码:Java成绩大于98分,而且Html成绩大于80分,老师奖励他;或者Java成绩等于100分,Html成绩大于70分,老师也可以奖励他。
if((score1 >98 && score2 > 80 ) || ( score1 == 100 && score2 > 70 )){//奖励
}
2.1.2 if-else语句
if (/* 条件判断 true or false */) {// true语句体
} else {// false语句体
}
/*
执行流程:代码运行到if-else结构时,首先判断if之后的条件是否为true,如果为true,执行if之后大括号内容,true语句体,如果为false,执行else大括号内容,false语句体
*/
示例代码:
import java.util.Scanner;public class Demo23IfElse {public static void main(String[] args) {/** if ( 条件判断 true or false ) { //二者必选其一* * // true语句体 * } else { * // false语句体* * }* * 执行流程: 代码运行到if-else结构时,首先判断if之后的条件是否为true,如果为true,执行if之后大括号内容,true语句体,* 如果为false,执行else大括号内容,false语句体*/int score = 88;if(score >= 60){System.out.println(score+",及格");}else{System.out.println(score+",不及格。。。");}System.out.println("over...");//判断性别,男就去男厕所,否则去女厕所/** 扩展:比较数值* 基本数据类型:==,比较数值是否相等* 8个基本类型* * 引用数据类型:equlas(),比较数据是否相等* String*/System.out.println("请输入你的性别:");Scanner scan = new Scanner(System.in);String sex = scan.next();if("男性".equals(sex)){System.out.println(sex+",去男厕所。。");}else{System.out.println(sex+",去女厕所。。");}System.out.println("----------------");char sex2 = '男';
// int sex3 = 1;//1男,2女
// boolean sex4 = true;//true男,false女if(sex2 == '男'){System.out.println("去男厕所。。");}else{System.out.println("去女厕所。。。。");} }}
运行结果:
扩展内容:在比较多时候,要注意数据类型。
基本数据类型的比较数值使用==运算符。
引用类型的比较实用equlas()方法。String属于引用类型的数据,所以在进行比较的时候需要使用equals()。而且建议字面常量写在前面:“王二狗”.equals(name)。
示例:如果是男生就永远18岁,否则永远16岁。
// 如果是男生 就永远18岁// 如果是 女生 永远16岁 char c = '女';if(c == '男'){// boolean 结果是true 执行if中 否则执行else中的System.out.println("永远18岁");}else{System.out.println("永远16岁");}
示例:买彩票
如果体彩中了500万,我买车、买房、非洲旅游
如果没中,继续买。
public static void main(String[] args){//1创建input对象Scanner input=new Scanner(System.in);//2提示System.out.println("中500万吗?Y/N");String answer=input.next();//3判断if("y".equals(answer)){ //字符串的判断使用equals方法 System.out.println("买房、买车、非洲旅游..."); }else{System.out.println("继续买....");} }
注意:字符串的判断使用equals方法
示例:输入四位数字的会员号的百位数字等于产生的随机数字即为幸运会员,提示恭喜您中奖了,否则没中奖。
提示: int random=(int)(Math.random()*10); //随机数
注意:Math.random();产生0-1之间的一个数字,含0不含1
public static void main(String[] args){//创建Input对象Scanner input=new Scanner(System.in);//提示System.out.println("请输入四位的会员号:");int member=input.nextInt();//百位int bai=member/100%10;int ran=(int)(Math.random()*10); //Math.random();产生0-1之间的一个数字,含0不含1 if(bai==ran){System.out.println("中奖了....旅游去吧");}else{System.out.println("好好干活...");}}
踩坑:String类型字符串比较用equlas()方法,基本数据类型使用==。
2.1.3 多重if语句
if … else if … else 语句用于对多个条件进行判断,进行多种不同的处理
if (判断条件1) {执行语句1;
} else if (判断条件2) {执行语句2;
}
......
else if (判断语句n) {执行语句n;
} else {执行语句n+1;
}
课堂画图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qsO5OmN4-1621904212237)(https://img.chengxuka.com/ruby0011/fenzhi8.png/mark)]
示例代码:
public class Demo24MulIf {public static void main(String[] args) {/** 多重if语句:多选一* if(条件1){* //条件1成立,执行此处的代码,后面的代码都不执行了* * }else if(条件2){* //条件1不成立,条件2成立,执行此处代码。。* * }else if(条件3){* //条件1,2都不成立,条件3成立,执行此处代码。。。* * }。。。*/String sex = "猴";if("男性".equals(sex)){System.out.println("男厕所。。"+sex);}else if("女性".equals(sex)){System.out.println("女厕所。。"+sex);}else{System.out.println("我也不知道了, 也许不去厕所吧。。");}System.out.println("over..");}}
运行结果:
示例:如果成绩大于90并且是男生就送个女朋友,成绩大于90并且是女生送个男朋友,否则…
char c = '女';int score = 10; if(score>90 && c=='男'){System.out.println("给送个女朋友"); }else if(score>90 && c=='女'){System.out.println("给送个男朋友");}else if(score<=1){System.out.println("你是厉害人");}
上机练习 :
我想买车,买什么车决定于我在银行有多少存款
如果我的存款超过500万,我就买保时捷
否则,如果我的存款超过100万,我就买宝马
否则, 如果我的存款超过50万,我就买帕萨特
否则, 如果我的存款超过10万,我就买qq
否则, 如果我的存款10万以下 ,我买捷安特
2.1.4 嵌套if语句
if(条件1) {if(条件2) {代码块1} else {代码块2}} else {代码块3}
示例代码:
public class Demo25If {public static void main(String[] args) {//给定一个性别和年龄,判断是否可以结婚//男:不能小于22周岁//女:不能小于20周岁char sex = '男';int age = 23;if(sex == '男'){//男性,年龄if(age >= 22){System.out.println("可以娶媳妇啦。。好开心。。");}else{System.out.println("还小呢,再等等。。。");}}else if(sex == '女'){//女性,年龄if(age >= 20){System.out.println("可以找婆家了。。。");}else{System.out.println("太小了,不能嫁人。。。");}}else{System.out.println("搞不清楚性别,不能结婚。。");}}}
运行结果:
示例:如果成绩大于90 如果是男生 送个女朋友, 如果是女生送个男朋友
// 如果成绩大于90 如果是男生 如果是女生int score = 10;char c = '男';if(score>90){if(c=='男'){System.out.println("给送个女朋友");}else{System.out.println("给送个男朋友");}}
2.1.5 特殊的if语句
// 特殊形式// 必须要求 if 或者 esle 语句中只能有一条语句if(score>60)System.out.println("好学生");elseSystem.out.println("给送个女朋友");
上机练习:输入四个季节。
需求
春天 打印输出 春暖花开
夏天 夏天打盹
秋天 秋高气爽
冬天 冬眠
// 1
import java.util.Scanner;class Test
{public static void main(https://img.chengxuka.com/ruby0011/String[] args) {// == 判断基本数据类型内容是否相等// 引用数据类型 == 判断内存地址 // 判断内容 String 类型 判断内容 equalsScanner sc = new Scanner(System.in);String str = sc.next();// boolean falg= str.equals("春天");if(str.equals("春天")){System.out.println("春暖花开");}else if(str.equals("夏天") ){System.out.println("夏天打盹");}else if(str.equals("秋天")){System.out.println("秋高气爽");}else if(str.equals("冬天")){System.out.println("穿着短袖冬眠"); }}}
2.2 switch语句
2.2.1 swtich语法规则
- 表达式expr的值必须是下述几种类型之一:
int, byte, char, short,enum;java7之后可以是String,不能用boolean,long,float,double等.
- case子句中的值const 必须是常量值(https://img.chengxuka.com/ruby0011/或final的变量),case中的值不能是一个范围,而且所有case子句中的值应是不同的,否则会编译出错;
- case语句是无序的。
- default子句是可选的(不必要)
- break语句用来在执行完一个case分支后使程序跳出switch语句块;否则会继续执行下去
2.2.2 语法格式
switch(表达式expr){case const1:statement1;break;case const2:statement2;break;… …case constN:statementN;break;default:statement_dafault;break;}
2.2.3 执行流程和注意点:
执行流程:
进入switch语句后,从上向下匹配case。匹配上哪个case就执行哪个分支语句。
所有的 case 都不满足需求的时候 执行default中的内容
break 帮助跳出switch 语句的, 如果执行过程中 没有遇到 break 继续向下执行直到遇到break为止
注意事项:
switch-case语句的注意点:
1、switch和if不同:if作用在boolean类型上。switch作用在int,char,byte,short,enum,String这些类型上。
2、default语句,是可选的。
3、case后的数值,必须是唯一的。
4、case是没有顺序的。
5、break语句:词义"打破,打碎,破坏"的意思。用于防止switch的穿透。
示例代码:
public class Demo26Switch {public static void main(String[] args) {/** switch-case 语句:选择结构,多个分支选择一个执行。* * 语法结构:* switch(表达式/变量){//byte,short,int,char,enum,String* * case 数值1:分支1;* break;* * case 数据2:分支2;* break;* * case 数值3:分支3;* break;* 。。。* default:最后一个分支;* break;* }* *//** 题目:一周的食谱,每天吃啥* 周一:麻辣烫* 周二:红烧肉* 周三:热干面* 周四:炸酱面* 周五:烤冷面* 周六:方便面* 周日:火锅*/int weekDay = 3;switch(weekDay){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;case 6:System.out.println("方便面");break;case 7:System.out.println("火锅");break;default://最后的操作:前面的case如果都没有匹配上,那么执行最后的这个default语句。System.out.println("信息有误。。");break;}System.out.println("over....");}}
运行结果:
练习: 简单实现switch语句
int i = 1;switch(i){case 1:System.out.println("熊大");break;case 2:System.out.println("熊二");break;case 3:System.out.println("光头强");break;default:System.out.println("Haaaa");break;}
练习: 判断 春夏秋冬
Scanner sc = new Scanner(System.in);String str = sc.next();switch(str){case "春天":System.out.println("春暖花开");break;case "夏天":System.out.println("闷热");break;case "秋天":System.out.println("秋高气爽");break;case "冬天":System.out.println("滴水成冰");break;default:System.out.println("火星的");break;}
练习: 需求: 利用switch实现一个计算器操作
Scanner sc = new Scanner(System.in);System.out.println("请输入第一个操作数:");int a = sc.nextInt();System.out.println("请输入运算符");String str = sc.next();int b = 0;// 利用了一个 if语句 帮助控制 如果是 ++ 或者是 -- 就不输入第二个操作数if("++".equals(str)|| "--".equals(str)){}else{System.out.println("请输入第二个操作:");b = sc.nextInt();}switch(str){case "+":System.out.println(a+"+"+b+"="+(a+b));break;case "-":System.out.println(a+"-"+b+"="+(a-b));break;case "*":System.out.println(a+""+b+"="+(ab));break;case "/":System.out.println(a+"/"+b+"="+(a/b));break;case "%":System.out.println(a+"%"+b+"="+(a%b));break;case "++":System.out.println("++"+a+"= "+(++a));break;case "--":System.out.println("--"+a+"= "+(--a));break;}
2.2.4 特殊用法 :case穿透
case穿透: 产生这种现象的原因:由于某个case语句中缺少或者漏写break语句所导致的结果.
踩坑:switch的穿透:某个case匹配成功之后,执行该case后的内容,遇到break结束。但是如果没有break语句,那么后面的case不再匹配了,直接执行,这个现象就叫做switch的穿透。。
示例代码:
public class Demo27Switch {public static void main(String[] args) {/** switch-case语句的注意点:* 1、switch和if不同:* if作用在boolean类型上。* switch作用在int,char,byte,short,enum,String这些类型上。* * 2、default语句,是可选的。* * 3、case后的数值,必须是唯一的。* * 4、case是没有顺序的。* * 5、break语句:词义"打破,打碎,破坏"的意思。用于防止switch的穿透。* * switch的穿透:某个case匹配成功之后,执行该case后的内容,遇到break结束。* 但是如果没有break语句,那么后面的case不再匹配了,直接执行,这个现象就叫做switch的穿透。* *//** 周1、3、5:方便面* 周2、4、6:喝粥* 周7:不吃*/int weekday = 1;switch (weekday) {case 1:case 3:case 5:System.out.println("方便面");break;case 2:case 4:case 6:System.out.println("喝粥");break;case 7:System.out.println("不吃");break;default:System.out.println("信息有误");break;}}}
运行结果:
上机练习:
// 需求: 打印输出指定的月份的天数Scanner sc = new Scanner(System.in);int month = sc.nextInt();switch(month){case 1: case 3: case 5: case 7: case 8: case 10: case 12:System.out.println("31天");break;case 2:System.out.println("28天/29天");break;case 4: case 6: case 9: case 11:System.out.println("30天");break; }System.out.println("over!");}
11、Java中的分支语句相关推荐
- Java中的条件语句
Java中的条件语句 1.if条件语句 (1)简单的if条件语句 语法如下: if(布尔表达式){语句序列 } ①布尔表达式:必要参数,表示最后返回的结果必须是一个布尔值.可以只是一个布尔值变量或者常 ...
- java中的foreach语句
在java中,foreach语句是for语句的特殊简化版本,在遍历数组等方面为程序员提供了很大的方便,语法格式如下: for(元素变量 x : 遍历对象 obj) { 引用了x的java语句: } f ...
- java中的sql语句书写_Java中sql语句之通配符*
在java中执行SQL语句要特别注意通配符的问题,否则是不会成功的: 在ACCESS中的通配符是* 例:select * from student where name like '张*' ...
- python分支语句_Python中的分支语句和循环语句及案例
今天是清明假期的最后一天,依旧学习着 Python,老样子来写一篇博客.本篇博文介绍一下 Python 中的 if 条件语句.while 循环语句.for in 循环语句以及 break 和 cont ...
- oracle的分支语句,Oracle中的分支语句
Oracle中的分支语句,Oracle条件分支语句:pl/sql中提供了三种分支语句:if-- then, if---then--else,if--then--ifesle,Oracle条 Oracl ...
- [JAVA]java中的打印输出语句
java中的打印语句分为三种: System.out.print(); System.out.println(); System.out.printf(); 1.System.out.print(); ...
- JAVA循环与分支语句edu_Java分支结构和循环结构原理与用法详解
本文实例讲述了Java分支结构和循环结构.分享给大家供大家参考,具体如下: 流程控制分类 顺序语句:从上到下按顺序依次执行 分支语句:根据条件不同,执行不同语句 循环语句:重复执行某些动作 单分支条件 ...
- java中的异常处理语句_Java中实现异常处理的基础知识
Java中实现异常处理的基础知识 异常 (Exception):发生于程序执行期间,表明出现了一个非法的运行状况.许多JDK中的方法在检测到非法情况时,都会抛出一个异常对象. 例如:数组越界和被0除. ...
- java中的if语句
if语句是分支语句,也叫做条件语句. if语句的语法格式: 第一种写法: if(布尔表达式){ java语句.... }如果布尔表达式的结果是true,就执行大括号里面的java语句,否则就不执行. ...
最新文章
- 转自CSDNattilax的专栏 :自适应网页设计 跟 响应式 设计的区别跟原理and实践总结...
- 美团面试动态规划——整数拆分
- DCMTK:将DICOM文件的内容转换为XML格式
- 关于Unsafe类的一点研究
- JavaFX 2.0和Scala,像牛奶和饼干
- rds基于什么开发_java rds
- Jmeter录制脚本时消息体数据乱码
- sys caffe教程
- matlab中单相整流器,应用Matlab仿单相PWM整流器的一种简单方法
- w ndows安装程序无法将,windows安装程序无法将windows配置在硬件上运行
- 计算机键盘各个键的用途,给大家介绍键盘各个键的功能图解
- HTML名人名言案例
- 11月更新!一口气上线20+新功能,3D架构拓扑图更具趣味性~
- oracle asm 缺省用户,oracle asm自动存储使用及管理说明(下)
- babylon-gui文档笔记
- 探索 SwiftUI 基本手势
- 谷歌逐梦穿戴圈:Wear OS的失败能够靠Pixel Watch挽回吗?
- JavaScript笔记 var e=e||window.event
- 最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用42
- python中的汉字编码(转载,已经注明转载地址)
热门文章
- 打开的一篇word文档,保存到数据库的某个字段中
- java面试中的各种排序
- 点滴积累-从object中取值
- 赛效:WPS中如何生成自动目录?
- SSH 协议的 ssh StrictHostKeyChecking
- 正则表达式——详情版+常用表达式
- 5.4 Android 的上下文菜单: Context Menu,registerForContextMenu(getListView())
- MES系统选型与价格有什么关系
- hashmap移除元素_JAVA中HashMap如何删除元素
- canvas小创作 之 实现一个画板(功能:画笔颜色、粗细可以任选;橡皮擦功能和清空画板功能)