流程控制之选择结构
一、Scaneer的基本使用
1.Scanner的概念
扫描器。即可以通过Scanner类扫描用户在控制台录入的数据
2.使用Scanner实现键盘录入功能的步骤
第一步:导包(位置放到class定义的上面)
import java.util.Scanner;
第二步:创建对象
Scanner sc = new Scanner(System.in);
3.代码演示
Demo1
// 1.导包
import java.util.Scanner;
public class ScannerDemo1 {
public static void main(String[] args) {
// 2. 创建键盘录入对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数:");
// 3.接收数据
int i = sc.nextInt();
// 将用户录入的数据打印到控制台上
System.out.println("i:" + i);
}
}
运行结果:
Demo2
// 1. 导包
import java.util.Scanner;
public class ScannerDemo2 {
public static void main(String[] args) {
// 需求:键盘录入两个整数,求它们的和
// 2. 创建键盘录入对象
Scanner sc = new Scanner(System.in);
// 3. 提示用户录入数据,并接收。
System.out.println("请录入第一个整数:");
int a = sc.nextInt();
System.out.println("请录入第二个整数:");
int b = sc.nextInt();
// 4. 计算整数和
int sum = a + b;
// 5. 打印结果
System.out.println("sum:" + sum);
}
}
运行结果:
二、流程控制结构概述
1.流程控制结构的概念
程序的结果跟代码的执行顺序紧密相关,通过使用一些特定的语句控制代码的执行顺序从而完成特定的功能,这就是流程控制结构。
2.流程控制结构的分类
1.顺序结构
2.选择(判断)结构
3.循环结构
3、流程控制结构之顺序结构
(1)顺序结构的概念
即程序按照代码的顺序从上往下、从左往右依次执行的代码结构。顺序结构是最简单的流程控制结构,不需要特定的语句,程序的大多数代码都是这样执行的。
(2)流程图如下
(3)代码演示
public class OrderDemo {
public static void main(String[] args) {
//顺序结构: 代码会按照从上往下,从左往右的顺序,依次逐行执行
System.out.println("程序开始执行");
System.out.println("A");
System.out.println("B");
System.out.println("C");
System.out.println(10 + 20 + "hello"); //30hello
System.out.println("程序执行结束");
}
}
运行结果
4.流程控制结构之选择结构
(1)选择结构的概念
根据不同的条件选择不同的代码来执行的代码结构。
选择结构要先判断条件是否成立,条件成立则执行一部分代码,不成立则执行另外一部分或结束代码,所以选择结构也叫判断结构。
(2)选择结构的分类
if语句(共有三种格式):如果
if 一般用作区间值的判断,比如
当前时间为0-8点,小黑和你说:“早上好”;
当前时间为9-12点,小黑和你说:“中午好”;
switch语句:转换,切换
switch一般用作固定值的判断,比如
你说“星期一”,小黑说“Monday”
你说“星期二”,小黑说“Tuesday”
(3)选择结构if的第一种格式
if(关系表达式) {
//具体语句
}
♦执行流程,如下图
♦代码演示
/*
选择结构之if语句:
第一种格式:
if(关系表达式) {
语句体1;
}
执行流程:
如果关系表达式成立,则执行与具体1
乳沟关系表达式不成立,则不执行语句体1
*/
public class IfDemo1 {
public static void main(String[] args) {
System.out.println("开始执行");
// 定义两个int类型的变量
int a = 10;
int b = 10;
// 判断两个变量是否相等
if (a == b){
// 如果能走到这里,说条件成立
System.out.println("a和b是相等的");
}
System.out.println("结束执行");
}
}
运行结果
(4)选择结构if的第二种格式
if(关系表达式) {
// 语句体1
} else {
// 语句体2
}
♦执行流程,如下图
♦代码演示
/*
选择结构之if语句:
第二种格式:
if(关系表达式) {
语句体1:
} else {
语句体2:
}
执行流程:
先判断关系表达式,看其是否成立(true:成立,false:不成立)
如果关系表达式成立,则执行语句体1
如果关系表达式不成立,则执行语句体2
*/
public class IfDemo2 {
public static void main(String[] args) {
System.out.println("开始执行");
// 需求:判断两个整数是否相等,相等则打印“相等”,不相等则打印“不相等”
int a = 10;
int b = 20;
// 调用if语句的第二种格式
if(a == b) { // if:如果
// 能走到这里,说明条件成立
System.out.println("相等");
} else { // else:否则
// 能走到这里,说明条件不成立
System.out.println("不相等");
}
System.out.println("结束执行");
}
}
运行结果:
(5)选择结构if的第三种格式
if(关系表达式1) {
//语句体1
} else if(关系表达式2) {
//语句体2
} //…
else {
//语句体n+1
}
♦执行流程,如下图
♦代码演示
/*
选择结构之if语句:
第三种格式:
if(关系表达式1) {
语句体1;
} else if(关系表达式2) {
语句体2;
} else if(关系表达式3) {
语句体3;
} else if(关系表达式n) { // n的意思是:这里可以写多个else if(关系表达式){}
语句体n;
} else {
语句体n+1;
}
执行流程:
先判断表达式1,看其是否成立(true:成立,false:不成立)
成立,则执行语句体1
不成立,则判断关系表达式2,看其是否成立
成立,则执行语句体2
不成立,咋判断关系表达式3,看其是否成立
以此类推,
如果关系表达式n成立,则执行语句体n,否则执行语句体n+1
需求:黑马智能机器人小黑和你打招呼
你说0~12的数字,小黑说:上午好
你说13~18的数字,小黑说:下午好
你说19~24的数字,小黑说:晚上好
你说其他数字,小黑说:我不认识这个时间!
*/
public class IfDemo3 {
public static void main(String[] args) {
/* 需求:黑马智能机器人小黑和你打招呼
你说0~12的数字,小黑说:上午好
你说13~18的数字,小黑说:下午好
你说19~24的数字,小黑说:晚上好
你说其他数字,小黑说:我不认识这个时间!
*/
// 1.定义变量,记录时间
int time = 15; // 正确数据,边界值,错误数据
// 2.小黑根据你的时间和你打招呼
if (time >= 0 && time <= 12) {
System.out.println("小黑和我说:上午好!");
} else if (time >= 13 && time <= 18) {
System.out.println("小黑和我说:下午好!");
} else if (time >= 19 && time <= 24) {
System.out.println("小黑和我说:晚上好!");
} else {
// 说明上述的三组条件都不满则
System.out.println("小黑和我说:我不认识这个时间!");
}
}
}
运行结果:
(6)if语句案例之获取两个整数的较大值
♦代码演示
import java.util.Scanner;
public class IfDemo4 {
public static void main(String[] args) {
// 需求:键盘录入两个数据,获取这两个数据的最大值
// 1.创建键盘录入对象,以便接收用户录入的数据(包含:导包,创建对象)
Scanner sc = new Scanner(System.in);
// 2.提示用户录入两个整数,并接收
System.out.println("请录入第一个整数:");
int a = sc.nextInt();
System.out.println("请录入第二个整数:");
int b = sc.nextInt();
// 3. 定义变量,记录最大值
int max;
// 4.通过if语句的第二种格式,判断两个整数的最大值
if (a >= b) {
// 如果走这里,说明a大
max = a;
}else {
// 如果走这里,说明b大
max = b;
}
// 5.将结果打印到控制台上
System.out.println("最大值是:" + max);
}
}
运行结果:
(7)if语句案例之根据学生成绩输出对应级别
♦代码演示
import java.util.Scanner;
public class IfDemo6 {
public static void main(String[] args) {
/*
需求:键盘录入学生考试成绩,请根据成绩判断该学生属于那个级别
90-100 皇帝
80-90(不包含) 宰相
70-80(不包含) 大臣
60-70(不包含) 县官
60(不包含)以下 草民
*/
// 1.创建键盘录入对象
Scanner sc = new Scanner(System.in);
// 2.提示学生录入成绩,并接收
System.out.println("请录入您的成绩:");
int score = sc.nextInt();
// 3.根据学生录入的成绩,和题设的条件进行对比,并按照要求进行输出即可
if(score >= 90 && score <= 100) {
System.out.println("皇帝");
} else if(score >= 80 && score < 90) {
System.out.println("宰相");
} else if(score >= 70 && score < 80) {
System.out.println("大臣");
} else if(score >= 60 && score < 70) {
System.out.println("县官");
} else if(score < 60) {
System.out.println("草民");
} else {
System.out.println("没有这样的成绩");
}
}
}
运行结果:
(8)选择结构之switch语句
♦switch语句格式
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
…
default:
语句体n+1;
break;
}
♦流程图,如下
♦代码演示:
import java.util.Scanner;
public class SwitchDemo {
public static void main(String[] args) {
// 需求:键盘录入数字,根据数字打印其对应的星期
// 1.创建键盘录入对象,以便接收用户录入的数字
Scanner sc = new Scanner(System.in);
// 2. 提示用户录入数字,并接收
System.out.println("请录入一个数字,我来打印其对应的日期:");
int week = sc.nextInt();
// 3.根据用户录入的数字,打印对应的日期,通过switch语句来实现
switch (week) {
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("我不认识这样的时间");
break;
}
}
}
运行结果: