分支结构

92 阅读6分钟

1. 包的概念

包用于区分同名的文件,包实际上就是文件夹。

包的命名规范:全部小写,以点分割,域名倒置,不能以点开头或者结尾

举例com.baidu.具体的名称com.qfedu.test1

包的 声明表示此类属于哪个包 永远在第一句

package com.qfedu.test1; // 包的 声明表示此类属于哪个包 永远在第一句
public class Test1 {

}

2. if结构

语法:
if(布尔表达式){
//代码块1
}

后续代码...

执行流程:

对布尔表达式进行判断。

结果为true,则先执行代码块1,再执行后续代码。

结果为false,则跳过代码块1,直接执行后续代码。

package com.qfedu.test2;
/**
 *	if选择结构
 *	if单词:如果
 *
 * @author WHD
 *
 */
public class Test1 {
	public static void main(String[] args) {
		int a = 20;
		if(a > 25) {
			System.out.println("a的值大于15");
		}
		
		System.out.println("程序结束");
		
	}
}
package com.qfedu.test2;

import java.util.Scanner;

/**
 * 	需求:根据用户输入的年龄判断是否成年
 * @author WHD
 *
 */
public class Test2 { // ctrl + 1 智能的快捷键 修正错误
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in); // ctrl + 1 回车 实现导包
		
		System.out.println("请输入年龄");
		
		int age = input.nextInt();
		
		if(age >= 18) {
			System.out.println("恭喜你,成年了");
		}
		
		System.out.println("程序结束!");		
	}
}
package com.qfedu.test2;

import java.util.Scanner;

/**
 * 	需求:根据用户输入的成绩 判断是否可以获取奖励 
 * 	如果
 * 	Java成绩大于90 并且音乐成绩 大于80 奖励苹果12袋
 * 	或者
 * 	Java成绩等于100 并且 舞蹈成绩 大于60 奖励苹果12袋
 * @author WHD
 *
 */
public class Test3 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		
		System.out.println("请输入Java成绩");
		
		int javaScore = input.nextInt();
		
		System.out.println("请输入音乐成绩");
		
		int musicScore = input.nextInt();
		
		System.out.println("请输入舞蹈成绩");
		
		int danceScore = input.nextInt();
		
		if((javaScore > 90 && musicScore > 80)    ||  (javaScore == 100 && danceScore > 60)) {
			System.out.println("奖励苹果12袋");
		}
		
		
		System.out.println("程序结束!");

	}
}

3. if-else结构

语法:
if(布尔表达式){
//代码块1
}else{
//代码块2
}

后续代码...
执行流程:

对布尔表达式进行判断。

结果为true,则先执行代码块1,再退出整个结构,执行后续代码。

结果为false,则先执行代码块2,再退出整个结构,执行后续代码。

package com.qfedu.test3;

import java.util.Scanner;

/**
 * 	需求:使用if-else判断用户年龄是否成年
 * @author WHD
 *
 */
public class Test2 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		
		System.out.println("请输入年龄");
		
		int age = input.nextInt();
		
		if(age >= 18) {
			System.out.println("成年了");
		}else {
			System.out.println("未成年");
		}
		
		System.out.println("程序结束!");
		
		
	}
}
package com.qfedu.test3;

import java.util.Scanner;

/**
 * 	需求:使用if-else 根据用户输入的成绩 判断是否可以获取奖励 
 * 	如果
 * 	Java成绩大于90 并且音乐成绩 大于80 奖励苹果12袋
 * 	或者
 * 	Java成绩等于100 并且 舞蹈成绩 大于60 奖励苹果12袋
 * @author WHD
 *
 */
public class Test3 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		
		System.out.println("请输入Java成绩");
		
		int javaScore = input.nextInt();
		
		System.out.println("请输入音乐成绩");
		
		int musicScore = input.nextInt();
		
		System.out.println("请输入舞蹈成绩");
		
		int danceScore = input.nextInt();
		
		if((javaScore > 90 && musicScore > 80)    ||  (javaScore == 100 && danceScore > 60)) {
			System.out.println("奖励苹果12袋");
		}else {
			System.out.println("继续努力");
		}
		System.out.println("程序结束!");
	}
}

4. 多重if

语法:
if(布尔表达式1){
//代码块1
}else if(布尔表达式2){
//代码块2
}else if(布尔表达式3){
//代码块3
}else{
//代码块4
}

执行流程:
表达式1为true,则执行代码块1,再退出整个结构。

表达式2为true,则执行代码块2,再退出整个结构。

表达式3为true,则执行代码块3,再退出整个结构。

以上均为false,则执行代码块4,再退出整个结构。

注意:相互排斥,有一个为true,其他均不再执行,
适用于区间判断。

package com.qfedu.test4;

import java.util.Scanner;

/**
 * 	需求:根据分数来判断成绩等级
 * 	大于等于90分 优秀
 * 	大于等于80分 良好
 * 	大于等于70分 中等
 * 	大于等于60分	及格
 * 	小于60分		不及格
 * 
 * 	以上需求使用之前所学的 if-else无法实现
 * 	所以我们使用新的结构  多重if
 * 	else if 不能单独出现 必须结合 if
 * 	末尾的else 可写 可不写 
 * @author WHD
 *
 */
public class Test1 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		
		System.out.println("请输入成绩");
		
		int score = input.nextInt();
		
//		大于等于90分 优秀
//		大于等于80分 良好
//		大于等于70分 中等
//		大于等于60分	及格
//		小于60分		不及格
		if(score >= 90) {
			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("不及格");
		}
		
		System.out.println("程序结束!");
	}
}

5. 嵌套if

语法:
if(外层表达式){
if(内层表达式){
//内层代码块1
}else{
//内层代码块2
}
}else{
//外层代码块
}

执行流程:
当外层条件满足时,再判断内层条件。

注意:
一个选择结构中,可嵌套另一个选择结构。

嵌套格式正确的情况下,支持任意组合。

package com.qfedu.test5;

import java.util.Scanner;

/**
 * 	嵌套if  一个if结构中嵌套另外一个if结构
 * 	语法格式正确的情况下 支持任意的组合
 * 
 * 	需求:学校举行百米跑步比赛   时间小于13秒 可以进入决赛  
 * 	再根据性别判断 进入男子组 或者 女子组 
 * @author WHD
 *
 */
public class Test1 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		
		System.out.println("请输入你的跑步时间");
		
		double time = input.nextDouble();
		
		System.out.println("请输入你的性别");
		
		String sex = input.next();
		
		if(time < 13) {
			System.out.println("恭喜进入决赛!");
			// 这里表示成绩合格 需要进行分组 所以我们再继续对性别进行判断
			// 判断字符串 不能使用==判断 必须使用equals()方法  
			
			if(sex.equals("男")) {
				System.out.println("进入男子组!");
			}else if(sex.equals("女")){
				System.out.println("进入女子组!");
			}else {
				System.out.println("暂不支持第三性别");
			}
			
		}else {
			System.out.println("跑的太慢了,继续加油!");
		}
		
		System.out.println("程序结束!");
		
		
	}
}

6. switch结构

switch(变量|表达式){
case 值1:
逻辑代码1;
case 值2:
逻辑代码2;
case 值n:
逻辑代码n;
default:
未满足时的逻辑代码;
}

可判断的类型:
byte、short、int、char、String(JDK7+)

执行流程:
如果变量中的值等于值1,则执行逻辑代码1。
如果变量中的值等于值2,则执行逻辑代码2。
如果变量中的值等于值n,则执行逻辑代码n。
如果变量中的值没有匹配的case值时,执行default中的逻辑代码。

注意:所有case的取值不可相同。

package com.qfedu.test6;

import java.util.Scanner;

/**
 * 	switch结构
 * 	switch : 开关
 * 	case :情况
 * 	switch支持的数据类型:byte short int char String(JDK7+) 枚举
 * 
 * 	default表示没有匹配到对应case的其他情况将执行default代码块
 * 	switch更擅长处理某个值属于固定等值的情况
 * 
 * 	需求:根据考试成绩名次进行奖励
 * 	第一名 奖励夏令营
 * 	第二名 奖励苹果13袋
 * 	第三名 奖励笔记本一本
 * 	第四名 奖励口头表扬一次
 * 	其他 打扫卫生	
 * @author WHD
 *
 */
public class Test1 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		
		System.out.println("请输入你的名次");
		
		int num = input.nextInt();
		
		switch(num) {
			case 1:
				System.out.println("奖励夏令营");
				break;
			case 2:
				System.out.println("奖励苹果13袋");
				break;
			case 3:
				System.out.println("奖励笔记本一本");
				break;
			case 4:
				System.out.println("口头表扬一次");
				break;
			default:
				System.out.println("打扫卫生");
				break;
				
		}
		
		System.out.println("程序结束!");
	}
}
package com.qfedu.test6;

public class Test2 {
	public static void main(String[] args) {
		short num = 2;
		
		char ch1 = 'A';
		
		String str1 = "D";
		switch(str1) {
		case "A":
			System.out.println("奖励夏令营");
			break;
		case "B":
			System.out.println("奖励苹果13袋");
			break;
		case "C":
			System.out.println("奖励笔记本一本");
			break;
		case "D":
			System.out.println("口头表扬一次");
			break;
		default:
			System.out.println("打扫卫生");
			break;
	}
	
	
	System.out.println("程序结束!");
	}
}
package com.qfedu.test6;

import java.util.Scanner;
/**
 * 	switch其他的写法
 * @author WHD
 *
 */
public class Test3 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		
		System.out.println("请输入你的名次");
		
		int num = input.nextInt();
		
		switch(num) {
			case 1:
			case 2:
			case 3:
				System.out.println("奖励夏令营");
				break;
			case 4:
				System.out.println("口头表扬一次");
				break;
			default:
				System.out.println("打扫卫生");
				break;
		}
		System.out.println("程序结束!");
		
	}
}