Java第四天——分支结构

   

分支结构

1.代码运行过程中的常见结构

1.1顺序结构

代码从上到下,从左至右,最基本原则。

1.2分支结构

路上的风景不一样,向左走向右走,结果不一样

代码满足不同的条件,执行不同的结果。

1.3循环结构

代码中存在需要多次执行的情况,这里会使用到循环结构。

2.分支结构

2.1 if 分支结构

【格式】

if (/* 条件判断 */) {
    //语句体
}

/* if 分支结构演示 */
class Demo2 {
	public static void main(String[] args) {
		//假设兜里有十块钱
		//int money = 10;
		
		//假设兜里有一块钱
		int money = 1;
		
		//money > 5 是一个条件判断,结果是一个boolean类型
		if (money >= 5) {
			System.out.println("煎饼果子来一套");
			money -= 5;
		}
		
		System.out.println("if大括号之外的代码~~~");
	}
}

【说明】

执行流程:
    当前程序运行到if结构式,首先执行条件判断,条件判断的结果是一个boolean类型,如果条件判断为true,执行语句体,为false,不能执行语句体。
    最后都会执行到语句体之外

【练习】

扫描二维码关注公众号,回复: 11083837 查看本文章
/* 
1. 判断一个字符是否是大写英文字母
*/
class Demo3 {
	public static void main(String[] args) {
		//定义一个字符类型的变量
		char ch = 'A';
		
		/* 
		代码结构安排的明明白白的!!
		*/
		if ( ch >= 'A' && ch <= 'Z' ) {
			System.out.println("这里是一个大写字母!!!");
		}
		
		System.out.println("大括号之外的语句~~~");
	}
}
/* 2判断一个字符是不是英文字符 */
class Demo4 {
	public static void main(String[] args) {
		//判断字符,需要使用一个字符类型变量
		char ch = 'A';
		
		/* 
		(ch >= 'A' && ch <= 'Z')大写字母范围
		(ch >= 'a' && ch <= 'z')小写字母范围
		*/
		if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z')) {
			System.out.println("这里是一个英文字母!!!");
		}
		
		System.out.println("大括号之外的语句~~~");
	}
}
/* 3.判断一个年份是不是闰年
		能被4整除,但是不能被100整除
		能被400整除
 */
class Demo5 {
	public static void main(String[] args) {
		//年份是一个整数,这里用int类型
		int year = 2008;
		
		if ( (year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
			System.out.println("这是闰年。");
		}
	}
}

2.2 if else 分支结构

【格式】

if (/*条件判断*/) {
    //true语句体
} else {
    //false语句体
}
 

【说明】

(1)if分支结构中只能处理条件满足的情况,条件不满足没有任何的处理,所以就有了if else分支结构。

(2)执行流程:
      代码执行到if else结构运行,首先判断if之后的条件判断,如果条件判断为true,执行true语句体,如果条件判断为false,执行false语句体。
      世界上最遥远的距离是我在if里,你在else里。

【练习】

/*
1. 工资判断
	月收入5000以上缴税
	月收入5000一下不需要缴税
*/
class Demo6 {
	public static void main(String[] args) {
		//工资是一个浮点类型数据,这里使用double
		double salary = 10000;
		
		/*
		语句体:大括号以内的内容,也可以称之为代码块
		*/
		if (salary > 5000) {
			System.out.println("我为国家做贡献");
		} else {
			System.out.println("我会继续努力,为国家做贡献");
		}
	}
}
/*
2.是否有女朋友
	有 true;没 false
*/
class Demo7 {
	public static void main(String[] args) {
		boolean hasGirlFriend = true;
		
		/* 
		if () 小括号内需要的数据类型是boolean类型
		hasGirlFriend 该变量就是一个boolean类型数据可以直接用于
		if 直接的判断
		*/
		if (hasGirlFriend) {
			System.out.println("奶茶买一送一");
		} else {
			System.out.println("路见不平一声吼,你还没有女朋友");
		}
	}
}
/* 
3. 判定一个字符是不是数字字符
 */
class Demo8 {
	public static void main(String[] args) {
		//需要判定的是一个数字字符,这里需要char类
		char ch = '1';
		
		/*
		这里操作判断的是一个字符类型数据
		*/
		if (ch >= '0' && ch <= '9') {
			System.out.println("该字符是一个数字字符");
		} else {
			System.out.println("该字符不是一个数字字符");
		}
	}
}

2.3 if else if 分支结构

【格式】

if (/* 条件匹配1 */) {
    //处理方式1
} else if (/* 条件匹配2 */) {
    //处理方式2
} else if (/* 条件匹配3 */) {
    //处理方式3
} else {
    //处理方式4
}

【说明】

执行流程:
    代码执行到if else if结构,从上至下,匹配if之后小括号里面的内容,条件匹配成功,执行对应的处理方式,结束分支结构运行。如果没有任何的一个条件匹配,执行else中的语句,也会终止条件匹配。
    
【注意】
    else if 个数不限,可以有多个

【练习】

(1)

用户购物VIP等级

100 - 1000 铜牌会员

1001 - 5000 银牌会员

5001 - 10000 金牌会员

10001 - 50000 钻石会员

50001 黑钻会员

class Demo9 {
	public static void main(String[] args) {
		//用户的消费数据按照int类型考虑
		int money = 2000;
		
		if (money >= 100 && money <= 1000) {
			System.out.println("铜牌会员");
		} else if (money > 1000 && money <= 5000) {
			System.out.println("银牌会员");
		} else if (money > 5000 && money <= 10000) {
			System.out.println("金牌会员");
		} else if (money > 10000 && money <= 50000) {
			System.out.println("钻石会员");
		} else if (money > 50000) {
			System.out.println("黑钻会员"); 
		} else {
			System.out.println("非会员");
		}
	}
}

(2)

学生成绩的等级划分

90 ~ 100 秀儿

80 ~ 90 良儿

70 ~ 80 中儿

60 ~ 70 格儿

60 以下 让你爹穿拖鞋来学校一趟

class Demo10 {
	public static void main(String[] args) {
		//成绩考虑有0.5的情况,需要使用浮点类型数据,这里采用float类型
		float score = 99.5F;
		
		if (score >= 90 && score <= 100) {
			System.out.println("秀儿");
		} else if (score >= 80) {
			System.out.println("良儿");
		} else if (score >= 70) {
			System.out.println("中儿");
		} else if (score >= 60) {
			System.out.println("格儿");
		}  else {
			System.out.println("让你爹穿拖鞋来学校一趟");
		}
	}
}

【综合练习】

前置知识准备:

补充知识点1:Scanner

    以上代码每一次的结果都是需要用户修改代码,保存,重新编译后才可以执行结果,对于普通用户而言,该操作可行吗?

我们需要给程序提供一种方式,用于接收用户输入的数据。

    Scanner是Java中提供的用于从控制台输入数据到代码中的一种方式,存在一些弊端,容易导致一些错误,这里只要求大家了解一些必要的方法

Scanner使用流程

  1. 点技能点,Java程序本身是没有直接使用Scanner的能力,这里需要点技能点。官方操作【导包】

    固定格式:

    import java.util.Scanner;

    放在class代码上一行

  2. 需要得到一个Scanner的变量

    固定格式:

    Scanner sc = new Scanner(System.in);

    1. 选择执行对应的方法,从键盘上获取对应的数据

      获取int类型      int类型的变量 = sc.nextInt();

      获取float类型   float类型的变量 = sc.nextFloat();

      获取double类型   double类型的变量 = sc.nextDouble();

      获取char类型    char类型的变量 = sc.nextLine().charAt(0);

补充知识点2:用户友好性提示

    代码运行需要站在用户的角度来思考问题,需要给予用户足够的提示和引导,告知用户当前操作如何完成,考虑代码的友好性!!!

    用户粘性问题!!!用户提示!!!用户友好性!!!

补充知识点3:用户输入数据合法性判断

    就算在提示中告知用户需要输入的数据范围是多少,但是用户在实际使用的过程中,依然存在输入错误的情况,需要对于用户输入的内容符合我们的判断逻辑需求,进入数据处理过程中。

代码如下:

/*
学生成绩的等级划分
	90 ~ 100 秀儿
	80 ~ 90	良儿
	70 ~ 80	中儿
	60 ~ 70	格儿
	60 以下	让你爹穿拖鞋来学校一趟
*/
import java.util.Scanner;
class Demo10 {
	public static void main(String[] args) {
		//成绩考虑有0.5的情况,需要使用浮点类型数据,这里采用float类型
		//这里赋值一个初值
		float score = 0.0F;
		
		//需要得到一个Scanner变量
		Scanner sc = new Scanner(System.in);
		//用户友好性提示操作
		System.out.println("请输入学生的成绩:");
		score = sc.nextFloat();
		
		/*
		验证用户输入数据的合法性
		如果用户输入的数据不合法,终止程序
		不合法:输入数据 > 100 或者 < 0
		*/
		if (score > 100 || score < 0) {
			System.out.println("输入数据不合法!!!");
			//程序退出
			System.exit(0);
		}
		
		/* 成绩等级判断 */
		if (score >= 90 && score <= 100) {
			System.out.println("秀儿");
		} else if (score >= 80) {
			System.out.println("良儿");
		} else if (score >= 70) {
			System.out.println("中儿");
		} else if (score >= 60) {
			System.out.println("格儿");
		}  else {
			System.out.println("让你爹穿拖鞋来学校一趟");
		}
	}
}

3.总结

分支结构用于处理代码中出现的一些需要判断,并且按照条件处理的情况!

(1)条件约束要考虑清楚

(2)处理的过程考虑清楚

(3)数据类型选择

发布了12 篇原创文章 · 获赞 1 · 访问量 298

猜你喜欢

转载自blog.csdn.net/Mr_SunJH/article/details/105563007