Java入门系列-08-选择结构
这篇文章为你搞懂2个问题
- if-else选择结构的使用?
- switch 的使用?
前面我们学习的代码都是直上直下的执行,还不会“拐弯”,这篇文章带大家来看一下会“拐弯”的代码——选择结构,顾名思义就有选择性的执行代码。
if-else 选择结构
简单if结构
只有一种执行情况,表达式结果为true时执行结构内代码片段,为false时不执行
语法:
if(表达式){
代码片段
}
敲一敲:
import java.util.Scanner;
public class DemoIf {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);//创建扫描器
System.out.println("请输入你的年龄:");
int age=input.nextInt();
if(age>=18){
System.out.println("你已经成年了!");
}
System.out.println("程序结束");
}
}
如果在控制台输入了一个大于等于18的数,那么表达式中的结果为 true 会输出 “你已经成年了!程序结束” 否则只会输出“程序结束”
if-else 结构
有两个代码段,执行结果只有一个,执行哪个代码段仍然是由 if 中的表达式决定,如果表达的结果为 true 则执行 if 后的代码段,为 false 时执行 else 后面的代码段。
语法:
if(表达式){
代码段1(表达式为 true 执行)
}else{
代码段2(表达式为 false 执行)
}
敲一敲:
import java.util.Scanner;
public class DemoIf {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);//创建扫描器
System.out.println("请输入你的年龄:");
int age=input.nextInt();
if(age>=18){
System.out.println("你已经成年了!");
}else {
System.out.println("你还没有成年!");
}
System.out.println("程序结束");
}
}
if-else if 多重选择结构
有多个选择条件,但是执行的结果只有一个。执行时会从上向下逐个检查表达式是否为 true ,如果表达式为 true 执行对应的代码段,并且后面的表达不再检查,如果为 false 会继续向下检查,直到遇到 表达式结果为 true 执行代码段。如果所有的表达式检查一遍后都为false,则执行 else。
语法:
if(表达式1){
代码段1
}else if(表达式2){
代码段2
}
……
else{
所有条件都不满足时执行
}
敲一敲:
import java.util.Scanner;
public class DemoMultipleif {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入你的成绩:");
int score=input.nextInt();
if(score>=90) {
System.out.println("成绩等级为:A");
}else if(score>=80&&score<90) {
System.out.println("成绩等级为:B");
}else if(score>=70&&score<80) {
System.out.println("成绩等级为:C");
}else if(score>=60&&score<70) {
System.out.println("成绩等级为:D");
}else {
System.out.println("成绩等级为:E");
}
}
}
switch 选择结构
switch 结构和多重 if 的功效是一样的,多重if更适合范围和区间的判断,switch更适合等值判断。
语法:
switch(表达式){
case 常量1:
代码段1
break;
case 常量2:
代码段2
break;
……
default:
所有的case都不满足时
break;
}
switch 中的表达式就是要和多个常量对比的条件,表达式可以是 String(jdk1.7及以上)、byte、short、int、char、枚举类型。case 后面是常量,常量是像
1
'a'
这样的数据或者是final
关键字修饰后的常量类型。多个 case 后的常量不能重复。
敲一敲:
import java.util.Scanner;
public class DemoSwitch {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("输入1-7的数字,查看周一到周日的菜谱:");
int day=input.nextInt();
switch (day) {
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:
System.out.println("输入的数组有误!输入1-7的数字");
break;
}
}
}
break关键字在结构中的作用是中断后面代码的执行,所以在每个case 语句后都有一个break,确保每执行一个case 便不再执行其他 case,但是也有例外可以省略break,编写下面的代码感受一下。
敲一敲:
import java.util.Scanner;
public class DemoNoBreak {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("输入1-7的数字,查看周一到周日的菜谱:");
int day=input.nextInt();
switch (day) {
case 1:
case 3:
case 5:
System.out.println("一、三、五:番茄牛腩");
break;
case 2:
case 4:
System.out.println("二、四:锅包肉");
break;
case 6:
case 7:
System.out.println("周六、日:可乐鸡翅");
break;
default:
System.out.println("输入的数组有误!输入1-7的数字");
break;
}
}
}
如果一些case 语句的执行结果都是相同的,那么就可以省略掉break,让代码继续向下执行,直到遇到另一个break。
试一试
- 下面代码的运行结果是什么,解释其原因
public class Question1 {
public static void main(String[] args) {
char chr='a';
switch (chr) {
case 96:
System.out.println(96);
break;
case 97:
System.out.println(97);
break;
case 98:
System.out.println(98);
break;
default:
System.out.println("啥也没有");
break;
}
}
}
- 下面代码的运行结果是什么?为什么会这样?
public class Question2 {
public static void main(String[] args) {
int a=10;
if(++a>10||++a>11) {
a++;
}
System.out.println("a的结果:"+a);
}
}
鼓励你在留言中发布自己的答案,与其他人一起交流,并在百度上搜索相关问题
关注公众号"享智同行"回复"008"获取答案和解析
Java入门系列-08-选择结构的更多相关文章
- Java入门系列-09-循环结构
这篇文章为你搞懂5个问题 while 循环如何使用 do-while 循环的使用 for 循环的使用 break.continue 的使用 循环结构的嵌套使用 生活中有很多事情需要我们重复的去做,比如 ...
- 038 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 05 案例演示switch结构-星期的表示案例以及总结
038 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 05 案例演示switch结构-星期的表示案例以及总结 本文知识点:案例演示switch结构并对sw ...
- 037 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 04 switch结构
037 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 04 switch结构 本文知识点:Java中的switch结构 选择结构分类 选择结构只有如下2种 ...
- 036 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 03 嵌套if结构
036 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 03 嵌套if结构 本文知识点:Java中的嵌套if结构 什么是嵌套if结构? 概念: 嵌套if结构 ...
- 035 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 02 多重if结构
035 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 02 多重if结构 本文知识点:Java中的多重if结构 选择结构回顾 if选择结构 注意: 1.条 ...
- 034 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 01 流程控制概述
034 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 01 流程控制概述 本文知识点:Java中的流程控制相关概念的认识 三大流程控制语句结构的简介 顺序 ...
- Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)
概要 前面,我们学完了List的全部内容(ArrayList, LinkedList, Vector, Stack). Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 Ja ...
- Java 第三章 选择结构1
选择结构(一) 会使用基本的 if 选择结构 掌握逻辑运算符,掌握多重 if 选择结构 , 掌握嵌套 if 选择 结构 为什么需要 if 选择结构 例如: 如果张浩的 java 考试成绩大于 98分, ...
- Java 集合系列 08 Map架构
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
随机推荐
- [.net 多线程]Semaphore信号量
信号量(Semaphore)是一种CLR中的内核同步对象.与标准的排他锁对象(Monitor,Mutex,SpinLock)不同的是,它不是一个排他的锁对象,它与SemaphoreSlim,Reade ...
- NSURLConnection 网络请求
前言 DEPRECATED: The NSURLConnection class should no longer be used. NSURLSession is the replacement f ...
- poj2154(polya定理+欧拉函数)
题目链接:http://poj.org/problem?id=2154 题意:n 种颜色的珠子构成一个长为 n 的环,每种颜色珠子个数无限,也不一定要用上所有颜色,旋转可以得到状态只算一种,问有多少种 ...
- cf555e
cf555e(缩点) 给一个 n 个点 m 条边的图,以及 q 对点 (s,t),让你给 m 条边定向.问是否存在一种方案,使每对点的 s 能走到 t. \(n,m,q≤ 2×10^5\). 首先,在 ...
- CF914E Palindromes in a Tree
$ \color{#0066ff}{ 题目描述 }$ 给你一颗 n 个顶点的树(连通无环图).顶点从 1 到 n 编号,并且每个顶点对应一个在'a'到't'的字母. 树上的一条路径是回文是指至少有一个 ...
- jmeter 正则表达式的关联
在工作中,用JM录制了登录---退出的脚本,但是多次请求后发现,总是返回的录制脚本的时候使用的账号的数据. 经过研究发现,login后,响应里的每次返回的token值是变化的,顺着往下看,下一个请求中 ...
- swarm1
type 必选项,1表示container,2表示swarm stack,3表示compose stack title 必选项 description 必选项 image 必选项,该应用使用的dock ...
- Qt 学习之路 2(37):文本文件读写
Qt 学习之路 2(37):文本文件读写 豆子 2013年1月7日 Qt 学习之路 2 23条评论 上一章我们介绍了有关二进制文件的读写.二进制文件比较小巧,却不是人可读的格式.而文本文件是一种人可读 ...
- 斐讯 N1 刷 Armbian 5.64
前言 N1 天天链是斐讯出的一款挖矿产品,虽然已经翻车,但是本身硬件配置还是很不错的,晶晨 S905D 主控,蓝牙 4.1,双频 WiFi,2G + 8G,USB2.0,HDMI.而一个只要不到 80 ...
- 基础问题:设置radio、select、checkbox 的readonly 属性
编辑记录的时候,有时候需要禁止用户修改某些项目,常用的方法有以下两种: 1>设置表单的readonly属性问题:但是readonly属性对radio.select.checkbox这三个表单不起 ...