java 选择结构 ---- if else 判断
需求:如果今天下雨那么我们今天就不上课。
- 分析:如果(今天下雨) 今天下雨是条件 条件满足 执行不上课,结果不成立执行 今天上课。
- 程序:用 if (布尔值){代码 } else {代码}
if(boolean){code}判断结果,成立输出if,否则输出else - boolean结果为true执行code boolean,结果为false执行输出else
运行过程:
package com.lihaozhe.javase.day03.bean;
import org.junit.jupiter.api.Test;
/**
* @author xhj
* @version 1.0.0 2022/4/12 下午4:22
*/
public class Demo01 {
@Test
public void test01(){
//我们先赋值code,执行一个布尔值。
//程序运行至此会先判断布尔结果是否成立,成立为true不成立为false
boolean code = true;//重点是布尔值的结果,影响执行的结果
//用if进行判断,会得到2种结果成立,或不成立,我们的结果为true
//结果为成立,则会执行“今天不上课”---else的结果会直接跳过,输出程序结束
//结果为不成立,则会执行“今天上课”---判断后直接输出else的结果,输出程序结束
if(code){ //true 输出结果
System.out.println("今天不上课");
}else { //false 输出结果
System.out.println("今天上课");
}
System.out.println("程序结束");
}
}
运行结果:
今天不上课
程序结束
三目运算符
需求:判断性别是男孩还是女孩
分析:我们先设置2个变量
一个是布尔值gender性别
二是字符串sex空值
通过if判断,对两个变量进行关联
·if(布尔值){对sex赋值}
· else {对sex赋值}
通过判断if的结果选择执行sex的值
如果gender的值为true则sex的值为 男孩
如果gender的值为false则sex的值为 女孩
@Test
public void test02(){
boolean gender = false;//为布尔gender赋值
String sex; //字符串空值
if(gender){ //判断gender的值如果是true执行sex男孩
sex = "男孩";
}else { //判断gender的值如果是false执行sex女孩
sex = "女孩";
}
System.out.println("性别是--->"+ sex);//最后输出,根据判断的结果输出sex的值
System.out.println("程序结束");
}
}
运行结果:
性别是--->女孩
程序结束
//-------------------------------------------
对程序进行优化:
@Test
public void test03(){
boolean gender = false; //布尔赋值gender
String sex = gender == true? "男孩":"女孩";
//执行顺序首先sex= 代表需要值
//判断gender==true? 表示判断gender的结果是true还是false
//"男孩":"女孩";将判断的结果将值赋给sex
//根据gender的值,问gender==true?是否成立,成立就是true将“男孩”赋值给sex,
//如果不成立就是false,就将“女孩”赋值给sex
System.out.println("性别是--->"+ sex);
System.out.println("程序结束");
}
}
运行结果:
性别是--->女孩
程序结束
分支结构二
多重if
需求:
随机生成0到7之间不包含7的整数 0 1 2 3 4 5 6
如果这个数字是0 则输出今天是星期日 如实是1则输出星期一 如果是2则输出星期二 以此类推
package com.lihaozhe.javase.day03.bean;
import org.junit.jupiter.api.Test;
/**
* @author 徐海杰
* @version 1.0.0 2022/4/12 下午4:22
*/
public class Demo01 {
@Test
public void test01(){ //缺点是每个程序都要计算,进行遍历,性能不好
Random random = new Random();
int i = random.nextInt(7);//生成随机数,7以内的随机数,赋值给i
System.out.println(i);//输出随机数i
if (i == 0) {
System.out.println("星期日");
}
if (i == 1) {
System.out.println("星期一");
}
if (i == 2) {
System.out.println("星期二");
}
if (i == 3) {
System.out.println("星期三");
}
if (i == 4) {
System.out.println("星期四");
}
if (i == 5) {
System.out.println("星期五");
}
if (i == 6) {
System.out.println("星期六");
}
System.out.println("程序执行结束");
}
运行结果:
5
星期五
程序执行结束
//------------------------------------------------------
优化程序
@Test
public void test02() {
// 需求:
// 随机生成0到7之间不包含7的整数 0 1 2 3 4 5 6
// 如果这个数字是0 则输出今天是星期日 如实是1则输出星期一 如果是2则输出星期二 以此类推
//使用if,else判断随机数结果如果是随机数是3,星期三,则排查到3下面的程序就直接跳过,如果是随机数是6,星期六,则排查到6,一样都进行遍历,缺点也是不稳定。
Random random = new Random();
int i = random.nextInt(7);
System.out.println(i);
if (i == 1) {
System.out.println("星期一");
} else if (i == 2) {
System.out.println("星期二");
} else if (i == 3) {
System.out.println("星期三");
} else if (i == 4) {
System.out.println("星期四");
} else if (i == 5) {
System.out.println("星期五");
} else if (i == 6) {
System.out.println("星期六");
} else {
System.out.println("星期日");
}
System.out.println("程序执行结束");
}
运行结果:
5
星期五
程序执行结束
//-----------------------------------------------------
分支结构 switch case匹配
分析:随机数i:switch(i)
1、用case的值去跟switc随机数匹配
2、如case是1则输出星期一以此类推,如都匹配不上
则匹配默认值default输出,星期天
3、default类似于if里的else
4、如果随机数是4匹配到4 星期四,5、6、7后面的结果也会输出
在输出后加 break终止5、6、7的代码执行 防止程序穿透。
@Test
public void test04() {
// 需求:
// 随机生成0到7之间不包含7的整数 0 1 2 3 4 5 6
// 如果这个数字是0 则输出今天是星期日 如实是1则输出星期一 如果是2则输出星期二 以此类推
Random random = new Random();
int i = random.nextInt(7);
System.out.println(i);
switch (i) { //得到一个随机数
case 1: //用case1的值匹配i的随机数
System.out.println("星期一"); //如果匹配成功后输出
break; //终止.防止代码穿透
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
default: //如果以上都匹配不上则默认输出default的值
System.out.println("星期日");
break;
}
System.out.println("程序执行结束");
}
运行结果:
6
星期六
程序执行结束
//----------------------------------------------------
//这种写发不用break防止代码穿透但仅仅高版本JDK支持
@Test
public void test05() {
Random random = new Random();
int i = random.nextInt(7);
System.out.println(i);
switch (i) {
case 1 -> System.out.println("星期一");
case 2 -> System.out.println("星期二");
case 3 -> System.out.println("星期三");
case 4 -> System.out.println("星期四");
case 5 -> System.out.println("星期五");
case 6 -> System.out.println("星期六");
default -> System.out.println("星期日");
}
System.out.println("程序执行结束");
}
}
运行结果:
3
星期三
程序执行结束