浅析一篇关于分支选择 If 语句的理论知识,希望大家能够有所收获。
1、if 语句:
表面解释为:如果…
根据条件选择是否执行某些代码。
语法:
if(条件){
任意的java代码 if 代码块
}
.....
//诠释的是:如果怎么样,,我就怎么样。。。
解释:
条件:必须是一个boolean 表达式。只要最终返回一个true or false 即可。
执行过程:
1:如果布尔表达式返回true,条件成立,那么执行 if 代码块。
2:如果布尔表达式返回false,条件不成立,那么跳过 if 后面的代码块,执行代码块后面 的java 代码。
注意:
如果if代码块 中的代码,只有一条java 语句(只有一个分号),那么大括号可以不要。 if 控制的就是选择是否执行这一条语句。
2、if-else 流程控制。
语法:
if(条件){
if 代码块
}else{
else 代码块
}
解释: 必须是一个boolean 表达式。只要最终返回一个true or false 即可。
诠释意思:如果条件成立,那么就XXXX,否则 就 *****。
执行过程:
如果条件成立,boolean表达式返回值为 true,那么执行 if 代码块中的内容,不执行else 代码块中的内容。
如果条件为 false,那么跳过if 代码块内容,执行 else 中的内容。
if 代码块 和 else 代码块 只能执行其一。
注意:
1:if 代码块 和 else 代码块 如果内容只有一句java代码,那么大括号可以省略。但是还是建议 把这对大括号添加上。
2: else 不能单独存在的,必须和 if 配对才行。
3、if- else if - else
多分支选择:
语法:
if(条件-1){
if 代码块
}else if(条件-2){
//if 代码块
}else if(条件-3){
//if 代码块
}else if(条件-4){
//if 代码块
}
......else if 数量不限,最少有一个。
else{
//
}
......
执行过程:
1:如果 条件-1 成立,那么执行 第一个if 代码块中的内容,然后跳过后面所有的分支,执行后续的内容。
2:如果 条件-1 不成立,跳过第一个if 代码块。然后 判断 条件-2 ,条件-2 成立,执行后面的if 代码块,不成立,再次判断下一个条件,以此类推。
3:到最后,如果所有的条件都不成立,执行else 中的内容。
注意:
1:最后的else 可以没有。如果有最后的else 那么该多分支选择语句,肯定会执行且仅执行某一条分支。
2:如果最后的else 没有,那么可能一个分支都不执行,是否执行某个分支,取决于该分支对应的条件是否成立。
3:每一个else 都要有一个和它对应的if 存在。else 的数量小于等于 if 的数量。
4:每一个分支代码,如果只有一条语句,都可以省略大括号,不建议省略。
使用的环境:多个分支,条件互斥就可以。
4、示例
4.1 示例1
//需求:模拟一次打斗 随机产生一个人的生命值hp[50-100],然后打印。 然后才随机产生一个伤害值[30-60],暴击的概率为50%,1.5倍伤害 。
//然后将伤害值也打印
//如果出现暴击的话,要提示。然后根据此次的伤害和生命值,最后输出人是否被 over掉。如果没有over,输出最后的血量hp。
import java.util.Random;
public class TestIf3 {
public static void main(String[] args) {
// 定义hp值
final int MIN_HP = 50;
final int MAX_HP = 101;
// 随机获取一个hp值
int hp = (int) (Math.random() * (MAX_HP - MIN_HP) + MIN_HP);
// 声明hp值
System.out.println("hp = " + hp);
// 随机伤害
final int MIN_DAMAGE = 30;
final int MAX_DAMAGE = 61;
final double CRITICAL_PERCENT = 0.5;
final double CRITICAL_DAMAGE = 1.5;
// 定义产生的伤害
int damage = (int) (Math.random() * (MAX_DAMAGE - MIN_DAMAGE) + MIN_DAMAGE);
System.out.println("damage = " + damage);
// 是否产生暴击
Random random = new Random();
// 是否被暴击,true 为暴击
boolean isCritical = random.nextBoolean();
// 条件判断是否被暴击
// if(true == isCritical){
if (isCritical) {// true
// if(!isCritical){//false
damage *= CRITICAL_DAMAGE;
hp -= damage;
if (hp < 0) {
hp = 0;
}
System.out.println("本次伤害为暴击伤害:伤害值为:" + damage + "\t剩余血量为:" + hp);
} else {
hp -= damage;
if (hp < 0) {
hp = 0;
}
System.out.println("本次伤害为普通伤害:伤害值为:" + damage + "\t剩余血量为:" + hp);
}
// 条件判断
if (hp == 0) {
System.out.println("人 over 了 ,hp = " + hp);
}
}
}
4.2 示例2
import java.util.Scanner;
/*
* 嵌套if语句
* 学校举行运动会,百米赛跑跑入10秒内的学生有资格进决赛,
* 根据性别分别进入男子组和女子组
* 注意:
* 1.嵌套if语句是前三种语句的混合使用
* 2.嵌套if语句会降低程序的可读性,能够使用三目改进,尽量使用三目改进
*/
public class TestIf2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入比赛成绩: ");
double seconds = input.nextDouble();
System.out.print("请输入性别: ");
String gender = input.next();
//条件判断
if (seconds < 10) {
System.out.println("恭喜你进入决赛圈,加油!!!");
if (gender.equals("男")) {
System.out.println("恭喜进入男子组决赛");
} else if (gender.equals("女")) {
System.out.println("恭喜进入女子组决赛");
} else {
System.out.println("恭喜进入人妖组决赛");
}
} else {
System.out.println("很遗憾,来年再战!!!");
}
}
}