第4章 程序控制结构
目录
- 顺序
- 分支(if else swith)
- 循环(for, while, do while, 多重循环*)
- break
- contine
- return
介绍
在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句。
- 顺序控制
- 分支控制
- 循环控制
顺序控制结构
-
介绍:程序从上到下逐行地执行,中间没有任何判断和跳转。
-
举例和注意事项
Java中定义成员变量时采用合法的前向引用。如:
public class Test{ int num1 = 12; int num2 = num1 + 2; } //错误形式如下: public class Test{ int num2 = num1 + 2; int num1 = 12; }
-
图示:中间没有判断,直接顺序走即可
分支控制结构
-
介绍:让程序有选择的进行执行,分支控制有三种
-
分类:1.单分支 2.双分支 3.多分支
单分支
-
基本语法
if(条件表达式) { 执行代码块;(可以有多条语句.) }
-
说明:当条件表达式为ture时,就会执行{}中的代码。如果为false就不执行。
特别说明:如果{}中只有一条语句,则可以不用{},但是建议写上{}
-
案例说明If01.java
//编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出"你年龄大于18,要对自己的行为负责,送入监狱” package chapter05; import java.util.Scanner;//IDEA中自动导入了包 public class If01 { public static void main(String[] args) { //编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出"你年龄大于18,要对自己的行为负责,送入监狱 //思路分析:1.定义一个Scanner对象,接收输入的年龄 //2.把年龄保存到一个变量 int age //3.使用if判断,输出对应的信息 Scanner scanner = new Scanner(System.in); System.out.println("请输入年龄"); int age = scanner.nextInt(); if (age > 18) { System.out.println("你年龄大于18,要对自己的行为负责,送入监狱"); } System.out.println("程序继续……"); scanner.close();//记住关闭接收终端 } }
-
单分支流程图
、
双分支
-
基本语法
if(条件表达式) { 执行代码块1; }else { 执行代码块2; }
-
说明:当条件表达式成立,即执行代码块1,否则执行代码块2。如果执行代码块只有一条语句,则{}可以省略,否则,不能省略。
-
案例演示lf02.java
//编写一个程序,可以输入人的年龄如果该同志的年龄大于18岁则输出"你年龄大于18,要对自己的行为负责,送入监狱。"否则,输出"你的年龄不大这次放过你了。" package chapter05; import java.util.Scanner; public class If02 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入年龄:");//新建键盘接收 int age = scanner.nextInt();//保存年龄int变量 if (age > 18) { //进行if判断 System.out.println("你年龄大于18,要对自己的行为负责,送入监狱。"); }else { //双分支 System.out.println("你的年龄不大这次放过你了。"); } System.out.println("程序继续……"); scanner.close(); } }
-
双分支流程图
练习题1-单双
-
嵌套
答案:韩顺平教育~
-
练习
//lfExercise01.java //2.编写程序,声明2个double型变量并赋值。判断第1个数大于10.0,且第2个数小于20.0,打印两数之和 //3.[课后自己练]定义两个变量int,判断两者的和,是否能被3又能被5整除,打印提示信息 //4.判断一个年份是否是闰年,闰年的条件是符合下面二者之一:(1)年份能被4整除,但不能被100整除;(2)能被400整除 int a = 12; int b = 34; if ((a+b) % 3 == 0 && (a + b) % 5 == 0) { System.out.println("和能被3和5整除"); } int years = 1; if((years % 4 ==0 && years % 100 != 0) || years % 400 == 0) { System.out.println("闰年"); }
多分支
-
基本语法
if(条件表达式1) { 执行代码块1; }else if(条件表达式2) { 执行代码块2; } ...... else{ 执行代码块n; } //特别说明:(1)多分支 可以没有else,如果所以的条件表达式都不成立,则一个执行入口都没有 (2)如果有else,如果所有的条件表达式都不成立,则默认执行else代码块
-
说明
1.当条件表达式1成立时,即执行代码块1;
2.如果表达式1不成立,才去判断表达式2是否成立;
3.如果表达式2成立,就执行代码块2;
4.以此类推,如果所有的表达式都不成立;
5.则执行else的代码块,注意,只能有一个执行入口。 -
图示
练习题2-多
案例1
//案例lf03.java
/*
输入保国同志的芝麻信用分:
如果:
1.信用分为100分时,输出信用极好;
2.信用分为(30, 99]时,输出信用优秀;
3.信用分为[60,80]时,输出信用一般;
4.其它情况,输出信用不及格
5.请从键盘输入保国的芝麻信用分,并加以判断
*/
package chapter05;
import java.util.Scanner;
public class If03 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);//接收数据
System.out.println("请输入保国同志的芝麻信用分:");
int grade = scanner.nextInt();//保存变量
if (grade >=1 && grade <= 100){
//限定范围-->此处还可以进行使用异常处理机制对输入的数据不是整数,而是hello进行处理!!!
if (grade == 100) {
//多分支判断
System.out.println("信用极好");
} else if (grade > 80 && grade <= 99) {
System.out.println("信用优秀");
} else if (grade >= 60 && grade <= 80) {
System.out.println("信用一般");
} else {
System.out.println("信用不及格");
}
} else {
System.out.println("输入数据不合法,请重新输入!");
}
scanner.close();//接收关闭
}
}
案例2
//代码,看看输出什么?
boolean b = true;
if(b = false) {
// 如果写成if(b= false)能编译通过吗?如果能,结果是?-->因为if判断的括号里是false,判断结果就是错,括号里是true,结果就是对(此处为赋值)
System.out.println("a");
} else if(b) {
System.out.println("b");
} else if(!b) {
System.out.println("c");
} else {
System.out.println("d");
}
嵌套分支
-
基本介绍
在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支的结构称为内层分支外面的分支结构称为外层分支。建议:不要超过3层(可读性不好) -
基本语法
if() { if() { //if-else... }else{ //if-else... } }
-
案例1
//参加歌手比赛,如果初赛成绩大于8.0进入决赛,否则提示淘汰。并且根据性别提示进入男子组或女子组。可以让学员先练习下,输入成绩和性别,进行判断和输出.Nestedlf.java //提示:double score;char gender; //接收字符:char gender = scanner.next().charAt(0) package chapter05; import java.util.Scanner; public class NestedIf { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入成绩:"); double score = scanner.nextDouble(); if (score > 8.0) { System.out.println("请输入性别:"); char gender = scanner.next().charAt(0);//该处是如何将字符串转成一个字符! if (gender == '男') { System.out.println("恭喜您进入男子组决赛!"); } else if (gender == '女'){ System.out.println("恭喜您进入女子组决赛!"); } else { System.out.println("输入类型有误,请重新输入!"); } } else { System.out.println("很遗憾您被淘汰!"); } scanner.close(); } }
switch分支
- 基本语法
-
switch(表达式) { case 常量1: //-->翻译就是当... 语句块1; break; case 常量2: 语句块2: break; ... case 常量n: 语句块n; break; default: default语句块; break; }
- switch说明
-
switch关键字,表示swtich分支
-
有一个表达式就对应一个具体的返回值
-
case 常量1:当表达式的值等于常量1,就执行语句块1
-
break:表示退出swtich
-
如果和 case 常量1匹配,就执行语句块1,如果没有匹配,就继续匹配 case 常量2
-
如果一个都没有匹配上,执行default
- 示意图
-
如果没有break会存在case穿透,执行完所有语句块!
- 快速入门
-
案例Switch01.java
//1.请编写个程序,该程序可以接收一个字符,比如:a,b,c,d,e,f,g //2.a表示星期一,b表示星期二 //3.根据用户的输入显示相应的信息要求使用switch语句完成 package chapter05; import java.util.Scanner</