韩顺平Java入门第九天–程序控制机构
1.程序流程控制介绍
在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句。
1) 顺序控制
2) 分支控制
3) 循环控制
2.顺序控制
3.分支控制
if-else 介绍 让程序有选择的的执行,分支控制有三种 :单分支 if 、 双分支 if-else、 多分支 if-else if -…-else。
1)单分支
//if 的快速入门
import java.util.Scanner;//导入
public class If01 {
//编写一个 main 方法
public static void main(String[] args) {
//编写一个程序,可以输入人的年龄,如果该同志的年龄大于 18 岁,
//则输出 "你年龄大于 18,要对自己的行为负责,送入监狱"
//
//思路分析
//1. 接收输入的年龄, 应该定义一个 Scanner 对象
//2. 把年龄保存到一个变量 int age
//3. 使用 if 判断,输出对应信息
//应该定义一个 Scanner 对象
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入年龄"); //(提示一句话)把年龄保存到一个变量 int age
int age = myScanner.nextInt();
//使用 if 判断,输出对应信息
if(age > 18) {
System.out.println("你年龄大于 18,要对自己的行为负责,送入监狱");
}
System.out.println("程序继续...");
}
}
执行结果:
D:\JAVACode\05>javac If01.java
D:\JAVACode\05>java If01
请输入年龄
18
程序继续...
D:\JAVACode\05>java If01
请输入年龄
12
程序继续...
2)双分支
//if-else 的快速入门
import java.util.Scanner;//导入
public class If02 {
//编写一个 main 方法
public static void main(String[] args) {
//编写一个程序,可以输入人的年龄,如果该同志的年龄大于 18 岁,
//则输出 "你年龄大于 18,要对 //自己的行为负责, 送入监狱"。否则 ,输出"你的年龄不大这次放过你了."
//
//思路分析
//1. 接收输入的年龄, 应该定义一个 Scanner 对象
//2. 把年龄保存到一个变量 int age
//3. 使用 if-else 判断,输出对应信息
//应该定义一个 Scanner 对象
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入年龄"); //把年龄保存到一个变量 int age
int age = myScanner.nextInt();
//使用 if-else 判断,输出对应信息
if(age > 18) {
System.out.println("你年龄大于 18,要对自己的行为负责,送入监狱");
} else {
//双分支
System.out.println("你的年龄不大这次放过你了");
}
System.out.println("程序继续...");
}
}
执行结果:
D:\JAVACode\05>javac If02.java
D:\JAVACode\05>java If02
请输入年龄
19
你年龄大于 18,要对自己的行为负责,送入监狱
程序继续...
D:\JAVACode\05>java If02
请输入年龄
11
你的年龄不大这次放过你了
程序继续...
单分支和双分支练习题:
//单分支和双分支练习题
public class IfExercise01{
public static void main(String[] args){
int x = 7;
int y = 4;
if(x > 5){
if(y > 5){
System.out.println(x + y);
}
System.out.println("韩顺平教育~");//输出结果韩顺平教育~
}else{
System.out.println("x is" + x);
}
}
}
//编写程序,声明 2 个 double 型变量并赋值。判断第一个数大于 10.0,且第 2 个数小于 20.0,打印两数之和。
public class IfExercise02 {
public static void main(String[] args){
double d1 = 34.5;
double d2 = 12.5;
if (d1 > 10.0 && d2 <20.0) {
System.out.println(d1 + d2);
}
}
}
//【课后自己练】定义两个变量 int,判断二者的和,是否能被 3 又能被 5 整除,打印提示信息
public class IfExercise03{
public static void main(String[] args){
int a = 10;
int b = 5;
int sum = a + b;
if((sum % 3 == 0) && (sum % 5 == 0)){
System.out.println("a 和 b 的和,能被 3 又能被 5 整除");
}else{
System.out.println("a 和 b 的和,不能被 3 和 5 整除");
}
}
}
//判断一个年份是否是闰年,闰年的条件是符合下面二者之一:
//(1)年份能被 4 整除,但不能被 100 整除;(2)能被 400 整除
//
//思路分析
//1. 定义 int year 保存年
//2. 年份能被 4 整除,但不能被 100 整除,
// => year % 4 == 0 && year % 100 != 0
//3. 能被 400 整除 => year % 400 == 0
//4. 上面的 2 和 3 是 或的关系 //代码实现
public class IfExercise04{
public static void main(String[] args){
int year = 2000;
if((year % 4 == 0 && year % 100 != 0)||(year % 400 == 0 )){
System.out.println(year + "年是闰年");
}else{
System.out.println(year + "年不是闰年");
}
}
}
3)多分支
多分支流程图
案例演示 1 请大家看个案例[If03.java]: 输入保国同志的芝麻信用分:
如果:1) 信用分为 100 分时,输出 信用极好;
2) 信用分为(80,99]时,输出 信用优秀;
3) 信用分为[60,80]时,输出 信用一般;
4) 其它情况 ,输出 信用 不及格
5) 请从键盘输入保国的芝麻信用分,并加以判断。
//课堂练习
import java.util.Scanner;
public class If03 {
//编写一个 main 方法
public static void main(String[] args) {
/*输入保国同志的芝麻信用分:
如果: 信用分为 100 分时,输出 信用极好;
信用分为(80,99]时,输出 信用优秀;
信用分为[60,80]时,输出 信用一般;
其它情况 ,输出 信用 不及格 请从键盘输入保国的芝麻信用分,并加以判断 假定信用分数为 int */
Scanner myScanner = new Scanner(System.in); //接收用户输入
System.out.println("请输入信用分(1-100):"); //请思考:如果小伙伴输入的不是整数,而是 hello..
//==>这里我们后面可以使用异常处理机制搞定-》老师点一下
int grade = myScanner.nextInt();
//先对输入的信用分,进行一个范围的有效判断 1-100, 否则提示输入错误
if(grade >=1 && grade <= 100) {
//因为有 4 种情况,所以使用多分支
if(grade == 100) {
System.out.println("信用极好");
} else if (grade > 80 && grade <= 99) {
//信用分为(80,99]时,输出 信用优秀;
System.out.println("信用优秀");
} else if (grade >= 60 && grade <= 80) {
//信用分为[60,80]时,输出 信用一般
System.out.println("信用一般");
} else {
//其它情况 ,输出 信用 不及格
System.out.println("信用不及格");
}
} else {
System.out.println("信用分需要在 1-100,请重新输入:)");
}
}
}
4)嵌套分支
基本介绍: 在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支的结构称为内层分支外面的分支结构称为外层分支。老师建议: 不要超过 3 层 (可读性不好)。
应用案例 :
参加歌手比赛,如果初赛成绩大于 8.0 进入决赛,否则提示淘汰。并且根据性别提示进入男子组或女子组。 输入成绩和性别,进行判断和输出信息。
import java.util.Scanner;
public class NestedIf {
//编写一个 main 方法
public static void main(String[] args) {
/*参加歌手比赛,如果初赛成绩大于 8.0 进入决赛,
否则提示淘汰。并且根据性别提示进入男子组或女子组。
【可以让学员先练习下】, 输入成绩和性别,进行判断和输出信息。
[NestedIf.java]
提示: double score; char gender;
接收字符: char gender = scanner.next().charAt(0)
*/
//思路分析
//1. 创建 Scanner 对象,接收用户输入
//2. 接收 成绩保存到 double score
//3. 使用 if-else 判断 如果初赛成绩大于 8.0 进入决赛,否则提示淘汰
//4. 如果进入到 决赛,再接收 char gender, 使用 if-else 输出信息
//代码实现 => 思路 --> java 代码
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入该歌手的成绩");
double score = myScanner.nextDouble();
if( score > 8.0 ) { System.out.println("请输入性别");
char gender = myScanner.next().charAt(0); //把字符串转成char
if( gender == '男' ) {
System.out.println("进入男子组");
} else if(gender == '女') {
System.out.println("进入女子组");
} else {
System.out.println("你的性别有误,不能参加决赛~");
}
} else { System.out.println("sorry ,你被淘汰了~");
}
}
}
课后作业:
import java.util.Scanner;
public class TicketingSystem {
//编写一个 main 方法
public static void main(String[] args) {
/*4-10旺季:
成人(18-60):60
儿童(<18):半价
老人(>60):1/3
淡季:
成人:40
其他:20
*/
//思路分析
//1. 创建 Scanner 对象,接收用户输入
//2. 接收 月份保存到 int month
//3. 使用 if-else 判断 如果是否为旺季,
//4. 如果进入到旺季,再接收 年龄age, 使用 if-else 输出信息
//代码实现 => 思路 --> java 代码
//
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入月份");
int month = myScanner.nextInt();
System.out.println("请输入年龄");
int age = myScanner.nextInt();
if( month <= 10 && month >= 4 ) {
if( age < 18 ) {
System.out.println("儿童票" + 60/2 + "元");
} else if(age >= 18 && age <= 60) {
System.out.println("成人票" + 60 + "元");
} else if(age > 60){
System.out.println("老人票" + 60/3 + "元");
} else{
System.out.println("你输入的年龄有误");
}
} else {
if (age >= 18 && age <= 60) {
System.out.println("成人票" + 40 + "元");
}else{
System.out.println("其他" + 20 + "元");
}
}
}
}
------文章为自学笔记,学习的课程是B站上的韩顺平30天学JAVA,文章标题的天数是自己学习的天数-----