一:分支控制结构
1:单分支 if
基本语法:
if(条件表达式){
代码块(可以有多条语句)
}
对于上面的单分支来说,我们可以形象的理解为 一个小孩子向他的妈妈要糖,他的妈妈就要看看他儿子值不值得,得到糖,如果条件表达式的结果为真,则表示小孩有资格吃糖,便把糖给小孩;若条件表达式的结果为假,则表示小孩没有资格吃,则小孩就不会在去询问他的妈妈。
案例1:编写一个程序 If01.java,可以输入一个人的年龄,如果该同志的年龄大于18岁,则输出“你的年龄大于18,要的自己的行为负责,送入监狱。
// 引入Scanner所在的包
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 = myScanner.nextInt();
if(age > 18) {
System.out.println("你年龄大于 18,要对自己的行为负责,送入监狱");
}
System.out.println("程序继续...");
}
}
// 引入Scanner所在的包
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 = myScanner.nextInt();
if(age > 18) { 妈妈再看他的小孩有没有资格吃糖
System.out.println("你年龄大于 18,要对自己的行为负责,送入监狱");
有资格,条件表达式为真 ,则会执行这段代码,给小孩吃糖,糖就是这一句代码
}
System.out.println("程序继续...");
无资格,条件表达式结果为假,则不给孩子吃糖,小孩不会再问。
}
}
2:双分支 if-else
if(条件表达式){
执行代码块1;
}else {
执行代码块2;
}
对于上面的双分支来说,我们可以形象的理解为 一个小孩子向他的妈妈要糖,他的妈妈就要看看他儿子值不值得,得到糖,如果条件表达式的结果为真,则表示小孩有资格吃糖,便把糖给小孩;若条件表达式的结果为假,则表示小孩没有资格吃,则小孩就去干别事情。
案例2:可以输入一个人的年龄,如果该同志的年龄大于18岁,则输出“你的年龄大于8岁,要对自己的行为负责,送入监狱,否则,输出你的年龄不大这次放过你了。
// 引入Scanner所在的包
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 = myScanner.nextInt();
if(age > 18) {
System.out.println("你年龄大于 18,要对自己的行为负责,送入监狱");
}else{
System.out.println("你的年龄不大这次放过你了");
}
System.out.println("程序继续...");
}
}
}
// 引入Scanner所在的包
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 = myScanner.nextInt();
if(age > 18) { 妈妈再看他的小孩有没有资格吃糖
System.out.println("你年龄大于 18,要对自己的行为负责,送入监狱");
有资格,条件表达式为真 ,则会执行这段代码,给小孩吃糖,糖就是这一句代码
}else{
System.out.println("你的年龄不大这次放过你了");
无资格,条件表达式结果为假,则不给孩子吃糖,让小孩去干别的事情。
}
System.out.println("程序继续...");
}
}
}
3:多分支 if-else if-else if-...-else
if(条件表达式1){
执行代码块1;
}else if(条件表达式2){
执行代码块2;
}else if(条件表达式3){
执行代码块3;
}
对于上面的多分支来说,我们可以形象的理解为 一个小孩子向他的妈妈要糖,他的妈妈就要看看他儿子值不值得,得到糖,如果条件表达式的结果为真,则表示小孩有资格吃糖,便把糖给小孩;若条件表达式的结果为假,则又会给小孩机会,再次检查,直到小孩的机会用完,让小孩去干另一件事。
案例3:
public class If002{
//编写一个main方法
public static void main(String[] args){
//思路:
//1:创建Scanner的对象,接收用户输入
//2:将用户输入保存在 int grade
Scanner myScanner = new Scanner(System.in);
//接收用户输入;
System.out.println("请输入信用分:");
//提示用户输入;
int grade = myScanner.nextInt();
if(grade >=1 && grade <=100){
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("输入错误,请重新输入:");
}
}
}
public class If002{
//编写一个main方法
public static void main(String[] args){
//思路:
//1:创建Scanner的对象,接收用户输入
//2:将用户输入保存在 int grade
Scanner myScanner = new Scanner(System.in);
//接收用户输入;
System.out.println("请输入信用分:");
//提示用户输入;
int grade = myScanner.nextInt();
if(grade >=1 && grade <=100){
如果想要做下面的工作,也就是想要吃糖,则必须要检查是否可以
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("输入错误,请重新输入:");
}
}
}
二:循环控制结构
1:基本语法
switch(表达式){
case 常量1:
语句块1;
break;
case 常量2:
语句块2;
break;
case 常量n;
语句块n;
break;
default;
default语句块;
break;
}
2:流程图
理解: 我们可以把switch理解为一个大箱子,里面有好多小箱子,并且每个小箱子都有编号,大箱子外面可以输入信息,来对里面的小箱子进行匹配,若匹配成功,则会使用小箱子的东西,并且使用完之后,可以选择退出大箱子,使用break,若不使用break,则不会退出,会继续访问后面的小箱子。:若无法匹配到里面的小箱子,可以输入default语句,放入这个小箱子,是默认的,可以放,也可以不放。
3:案例 Switch01.java
public class Switch01{
//编写main方法
public static void main(String[] args){
//思路:
//1:创建Scanner对象,接收用户输入;
//2:将接收的输入保存在 char c1里面。
//3:使用switch进行匹配
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入信息:");
char c1 = myScanner.next().charAt(0);
switch(c1){
case 'a':
System.out.println('A');
case 'b':
System.out.println('B');
case 'c':
System.out.println('C');
case 'd':
System.out.println('D');
case 'e':
System.out.println('E');
default :
System.out.println("您的输入有误,请重新输入:");
}
}
}
4:注意事项和细节
1:表达式的数据类型,必须和case子句里面的常量值的数据类型 一致,若两种数据类型可以自动进行相互转换也可以,比如输入的是字符,常量是int。
可以理解为不是一家人,不进一家门,如果类型不同,或者不能相互转换,则不能进行匹配,会出现错误。
2:表达式的返回值的数据类型必须是:(byte,short,int,char,enum[枚举],String)
3:case的值必须是常量,不能是变量 因为里面的小箱子的编号不能随意变动,每个箱子都有独立的编号,就和一个人有一个身份证一样。
4:default子句这个小箱子可以放也可以不放进去,当匹配不到别的小箱子的时候,可以执行default。是个备胎。
5:若case子句执行完之后,没有遇到break,则会继续执行下一个case子句,直到遇到break才会终止switch。