运算符和分支结构

运算符和分支结构

1. 运算符

1.1 关系运算符
> < >= <= == !=
关系运算符的结果有且只有 true or false
用于在开发中的条件判断使用
1.2 逻辑运算符
&&
	与,并且
	同真为真,有假【即】假
||
	或,或者
	有真【即】真,同假为假
!
	非,取反
	强牛 犟,假变真来,真变假
	
逻辑运算符:
	一般用于组合条件的判断,条件过滤,多情况分析。
	断路原则
1.3 自增自减运算符
【注意事项】
	1. 自增自减运算符有且只能操作变量!!!
	2. 自增自减运算符独立存在!!!单独成行,减少代码中的歧义!!!
	3. 【个人建议】
		使用 += 1 和 -= 1 替代自增自减运算符
		Swift取消了 自增自减运算符

++:
	在变量之后,首先执行变量所在行语句,再执行自增1操作
	在变量之前,首先执行变量自增1操作,再执行所在行语句
	
--:
	在变量之后,首先执行变量所在行语句,再执行自减1操作
	在变量之前,首先执行变量自减1操作,再执行所在行语句
【补充知识点 逻辑运算符断路原则问题】
class Demo4 {
	public static void main(String[] args) {
		int num = 10;
		boolean ret = 10 > 15 && num++ >= 10;
		
		/*
		断路原则问题:
			逻辑与断路元素问题
			10 > 15 该表达式结果为false,已经决定了当前整个
			逻辑与表达式的结果为false,计算机为了提高效率,
			从逻辑与false条件开始,之后的表达式不再运行。
		*/
		System.out.println("num : " + num);
		System.out.println("ret : " + ret);
		
		int num1 = 10;
		boolean ret1 = 10 > 5 || ++num1 > 5;
		
		/*
		断路原则问题
			逻辑或断路原则问题
			在逻辑或表达式中,出现了第一个为true条件,整个
			表达式结果已经明确为true,不需要在进行之后的判
			断,节约计算机资源,提供效率。
		*/
		System.out.println("num1 : " + num1);
		System.out.println("ret1 : " + ret1);
	}
}

2. 从键盘上获取用户录入的数据[CV大法]

1. 导包,点技能点
	import java.util.Scanner;
	class Demo1 {}

2. 获取Scanner的变量, 扫描器的一个变量
	Scanner sc = new Scanner(System.in);
	
3. 使用Scanner其中的方法
	获取int类型数据 sc.nextInt();
	获取double类型数据 sc.nextDouble();
	获取String类型字符串数据 sc.next(); sc.nextLine();
	获取一个char类型字符数据 sc.next().charAt(0); 		
						     sc.nextLine().charAt(0);

3. 分支结构

3.1 if分支结构
if (/* 布尔类型的表达式 true or false */) {
	// 语句体
}
// 后续代码

/*
执行流程
	首先判断布尔类型的表达式 true还是false
	true 执行语句体
	false 执行后续代码
*/
3.2 if - else分支结构
if (/* 布尔类型的表达式 true or false */) {
	// true语句体
} else {
	// false语句体
}
/*
执行流程:
	首先判断if之后小括号里面的布尔类型数据到底是什么
	如果为true,执行true语句体
	如果为false,执行false语句体
	
	世界上最遥远的距离是,我在if里,你在else里
*/
3.3 if - else if分支结构
/*
学生的成绩划分:
	>= 90 优秀
	>= 80 良好
	>= 70 中等
	>= 60 及格
	< 60 不及格
*/

if (/* 布尔条件1 */) {
    // 处理方式1
} else if (/* 布尔条件2*/) {
	// 处理方式2
} else if (/* 布尔条件3 */) {
	// 处理方式3
} else {
    // 无匹配项处理方式
}
/*
执行流程
	使用已有条件匹配if之后的布尔条件
	匹配到任何一个布尔条件,指定对应的处理结果,结束if - else if结构,执行后续代码
	如果没有任何一个条件匹配,执行 else里面语句,然后在执行后续代码

注意
	else可以省略!!!
*/
【补充知识点 用于输入数据的合法性判断问题】
在实际开发中,存在生活中数据的合法性和程序运行的语法要求冲突问题。
在程序的运行过程中,我们需要用户输入的数据进行合法性判断,如果用户输入的数据不是合法范围以内的,需要给予用户提示,并且不可以进入正常的代码运行过程中。

学生的成绩 0 ~ 100, 超出0~100都是不合法的!!!
1. 不能大于100 score > 100
2. 不能小于0 score < 0
3. 满足任何一个条件都是非法情况!!!
	score > 100 || score < 0
4. if 判断
// 导包
import java.util.Scanner;

class Demo8 {
	public static void main(String[] args) {
		int score = 0;
		// Scanner扫描器变量
		Scanner sc = new Scanner(System.in);
		
		System.out.println("请输入学生的成绩:");
		score = sc.nextInt();
		
		// 用户输入数据合法性判断问题
		if (score < 0 || score > 100) {
			System.out.println("亲,您输入的数据不对哦~~~秋咪~~~");
			// 程序退出
			System.exit(0);
		}
		
		// if - else if
		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("让你爹穿着拖鞋来学校一趟!!!");
		}
		
	}
}
3.4 switch - case结构
switch (/* 变量|表达式 */) {
    case1:
        // 处理方式1;
        break;
    case2:
        // 处理方式2;
        break;
    default:
        // 最终处理方式
        break;
}
/*
执行流程:
	取出switch小括号里面的数据匹配对应的case选择
	如果存在case匹配,执行对应的处理方式
	如果没有任何的一个case匹配。执行default处理方式
	
switch case使用注意事项
	1. break关键字作用是用于跳出对应的case选项
	2. break省略之后,执行对应的case选择,会继续运行到下一个break或者大括号结尾终止switch - case运行
	3. 在case选项中不允许出现相同的选择,语法错误!!!
	4. 在switch case语句体中,能够执行的代码有且只能是case之后或者default之后的代码,其他代码都不可以执行!!!
	5. default可以省略,按照自己的业务逻辑需要考虑是否省略default选择,default可以处理用户在输入过程中超出case选项的一些特殊情况。
*/
3.5 条件运算符/三目运算符
格式:
	条件判断 ? true处理方式 : false处理方式;

条件运算符/三目运算符
	使用局限性较大,类似于if - else结构。
3.6 分支结构嵌套
class Demo11 {
	public static void main(String[] args) {
		int score = 89;
		
		if (score >= 90) {
			if (score >= 95) {
				System.out.println("A+");
			} else {
				System.out.println("A-");
			}
		} else {
			System.out.println("A--");
		}
	}
}

4. 局部变量

存在于代码块中的变量!!!

1. 局部变量有且只能在当前所处的代码块中使用,超出当前代码块范围无效!!!【作用域问题】
2. 在作用域范围以内,任何的地方可以直接使用对应的变量
3. 在一个变量的作用域范围以内,不能重定义同名变量,报错!
4. 局部变量未赋值不能使用

5. 练习

1. 完成条件:判断是否是闰年
	能被4整除,但是不能被100整除,或者可以被400整除
	a. year % 4 == 0
	b. year % 100 != 0
	c. year % 400 == 0
	(year % 4 == 0 && year % 100 != 0) || year % 400 == 0

2. 完成条件:判断一个字符是不是大写英文字符
	A ~ Z
	'A' <= ch <= 'Z' 错误的!!!
	ch >= 'A' && ch <= 'Z'
	
3. 完成条件:判断一个字符是不是英文字符
	a. 英文字符中大写靠前,小写靠后
	b. 大写和小写英文字符之间有其他字符
	(ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z')
	
4. 使用if判断完成对应90后00后判断,用户输入年龄,判断情况。
5. 用户输入一个数值,判断是不是偶数
6. 用户输入自己的工资,判断是否需要缴税
class HomeWork1 {
    // 使用if判断完成对应90后00后判断,用户输入年龄,判断情况。
    public static void main(String[] args) {
        int age = 0;
        
        if (age >= 11 && age <= 20) {
            System.out.println("00后");
        } else if (age >= 21 && age <= 30) {
            System.out.println("90后");
        } else {
            System.out.println("老的算80后,小的算10后");
        }
    }
}
class HomeWork2 {
    // 用户输入一个数值,判断是不是偶数
    public static void main(String[] args) {
        int num = 0;
        
        if (num % 2 == 0) {
            System.out.println("偶数");
        } else {
            System.out.println("奇数");
        }
    }
}
class HomeWork3 {
    // 用户输入自己的工资,判断是否需要缴税
    public static void main(String[] args) {
        double salary = 0.0;
        
        if (salary > 5000) {
            System.out.println("我为国家做贡献,武汉加油,中国加油");
        } else {
            System.out.println("在我们GP班不要出现这种情况");
        }
    }
}




















void main(String[] args) {
        double salary = 0.0;
        
        if (salary > 5000) {
            System.out.println("我为国家做贡献,武汉加油,中国加油");
        } else {
            System.out.println("在我们GP班不要出现这种情况");
        }
    }
}



















发布了13 篇原创文章 · 获赞 3 · 访问量 270

猜你喜欢

转载自blog.csdn.net/weixin_46292175/article/details/104270165
今日推荐