Day04 java笔记 分支结构

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

顺序结构
     代码从上到下,从左至右运行,最基本的原则
     
分支结构
     路上的风景不一样,向左向右走的结果不一样
     代码满足不同的条件,执行不同的结果
     
循环结构
     代码中存在需要多次执行的情况,这里会使用到循环结构

4.2 if分支结构

格式:
/*
if (/*条件判断*/){
        //语句体
    }
/*
    执行流程:
        当前程序运行到if结构时,首先执行条件判断,条件判断的结果是一个boolean类型,如果条件判断为true,执     行语句体,为false,不能执行语句体。最后都会执行到大括号之外
    */
​
/* if 分支结构演示 */
class Demo2 {
    public static void main(String[] args) {
        // 假设你兜里有10块钱
        // int money = 10;
        
        // 假设你兜里有1块钱
        int money = 10;
        
        // money > 5 是一个条件判断,结果是一个boolean
        if (money >= 5) {
            System.out.println("煎饼果子来一套");
            money -= 5;
            
            System.out.println("余额 :" + money + "元");
        }
        
        System.out.println("if大括号之外的代码~~~~");
    }
}
/*
1. 判断一个字符是不是大写英文字母
*/
class Demo3 {
    public static void main(String[] args) {
        // 定义一个字符类型char 的变量
        char ch = '我';
        
        /* 
        代码结构安排的明明白白的!!!
        */
        if (ch >= 'A' && ch <= 'Z') {
            System.out.println("这里是一个大写字母!!!");
        }
        
        System.out.println("大括号之外的语句!!!");  
    }
}
/*
2. 判断一个字符是不是英文字符
*/
class Demo4 {
    public static void main(String[] args) {
        // 判断字符,需要使用一个char类型变量
        char ch = '1';
        
        /*
        (ch >= 'A' && ch <= 'Z') 大写字母范围
        (ch >= 'a' && ch <= 'z') 小写字母范围
        */
        if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z')) {
            System.out.println("这是一个英文字母");
        }
        
        System.out.println("if 大括号之外的代码");
    }
}
/*
3. 判断一个年份是不是闰年
    能被4整除但是不能被100整除,或者能被400整除
*/
class Demo5 {
    public static void main(String[] args) {
        // 年份是一个整数,这里使用int类型
        int year = 2009;
        
        /*
        year % 4 == 0 && year % 100 != 0 || year % 400 == 0
        */
        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
            System.out.println("是闰年");
        }
    }
}

4.3 if else分支结构

/*
if 分支结构中只能处理条件满足的情况,条件不满足没有任何的处理语句。
​
if else分支结构。
*/
if (/* 条件判断 */) {
    // true语句体
} else {
    // false语句体
}
/*
执行流程:
    代码执行到if else结构运行,首先判断if之后的条件判断,如果条件判断为true,执行true语句体,如果条件判断为false,执行false语句体。
    世界上最遥远的距离是我在if里,你在else里
*/
/*
1. 工资判断
    月收入5000以上缴税
    月收入5000以下不需要缴税
*/
class Demo6 {
    public static void main(String[] args) {
        // 工资是一个浮点类型数据,这里使用double类型
        double salary = 4999.0;
        
        /*
        语句体:
            大括号以内的内容,也可以称之为代码块
        */
        if (salary > 5000) {
            System.out.println("我为国家做贡献");
        } else {
            System.out.println("我会继续努力,为国家做贡献");
        }
    }
}
/*
2. 是否有女朋友
    有 true
    没有 false
*/
class Demo7 {
    public static void main(String[] args) {
        // 是否有女朋友就两种情况,true or false
        boolean hasGirlFriend = false;
        
        /*
        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 = '我';
        
        /*
        这里操作判断的是一个字符类型数据
        */
        if (ch >= '0' && ch <= '9') {
            System.out.println("该字符是一个数字字符");
        } else {
            System.out.println("该字符不是一个数字字符");
        }
    }
}

4.4 if else if 分支结构

学生成绩的等级划分:
    90 ~ 100 A
    80 ~ 90 B
    70 ~ 80 C
    60 ~ 70 D
    60以下 E
​
用户购物VIP等级
    100 ~ 1000 铜牌会员
    1001 ~ 5000 银牌会员
    5001 ~ 10000 金牌牌会员  
    10001 ~ 50000 钻石会员  
    50001  黑钻会员 
if (/* 条件匹配1 */) {
    // 处理方式1
} else if (/* 条件匹配2 */) {
    // 处理方式2
} else if (/* 条件匹配3 */) {
    // 处理方式3
} else {
    // 无匹配项最终处理方式
}
/*
执行流程:
    代码执行到if else if结构,从上至下,匹配if之后小括号里面的内容,条件匹配成功,执行对应的处理方式,结束分支结构运行。如果没有任何的一个条件匹配,执行else中的语句,也会终止条件匹配
​
【注意】
    else if个数不限制,可以有多个!!!
*/
/*
学生成绩的等级划分:
    90 ~ 100 A
    80 ~ 90 B
    70 ~ 80 C
    60 ~ 70 D
    60 以下 E
*/
class Demo10 {
    public static void main(String[] args) {
        /*
        成绩考虑存在0.5的情况,需要使用浮点类型数据
        这里采用float类型
        */
        float score = 59F;
        
        /* 成绩等级判断 */
        if (score >= 90 && score <= 100) {
            System.out.println("A");
        } else if (score >= 80) {
            System.out.println("B");
        } else if (score >= 70) {
            System.out.println("C");
        } else if (score >= 60) {
            System.out.println("D");
        } else {
            System.out.println("E");
        } 
    }
}
/*
用户购物VIP等级
    100 ~ 1000 铜牌会员
    1001 ~ 5000 银牌会员
    5001 ~ 10000 金牌牌会员  
    10001 ~ 50000 钻石会员  
    50001  黑钻会员 
*/
class Demo9 {
    public static void main(String[] args) {
        // 用户的消费数据按照int类型考虑
        int money = 50001;
        
        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("非会员...");
        }
    }
}

【补充知识点 Scanner 复制粘贴就可以了】

    以上代码每一次的结果都是需要用户修改代码,保存,重新编译之后才可以进行执行结果。对于普通用户而言,该操作可行吗?
    我们需要给程序提供一种方式,用于接受用户输入的数据!!!
​
    Scanner是Java中提供的用于从控制台输入数据到代码中的一种方式,存在一些弊端,容易导致一些错误,这里只要求大家了解一些必要的方法。
    【Scanner操作哪里需要沾哪里】
    
Scanner使用流程
    1. 点技能点,Java程序本身是没有直接使用Scanner的能力,这里需要点技能点。
    官网操作【导包】
    固定格式:
        import java.util.Scanner;
        放在class代码上一行
    
    2. 需要得到一个Scanner的变量
    固定格式:
        Scanner sc = new Scanner(System.in);
    
    3. 选择执行对应的方法,从键盘上获取对应的数据
        获取int类型 
            int类型的变量 = sc.nextInt();
        获取float类型 
            float类型的变量 = sc.nextFloat();    
        获取double类型
            double类型的变量 = sc.nextDouble();
        获取char类型 
            char类型的变量 = sc.nextLine().charAt(0);

【补充知识点 用户友好性提示】

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

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

就算在提示中告知用户需要输入的数据范围是多少,但是用户在实际使用的过程中,依然存在输入错误的情况。需要对于用户输入的数据进行合法性判断,如果用户输入的内容符合我们的判断逻辑需求,进入数据处理过程。如果不符合要求,直接终止程序!!!
/*
学生成绩的等级划分:
    90 ~ 100 A
    80 ~ 90 B
    70 ~ 80 C
    60 ~ 70 D
    60 以下 E
*/
​
// 导包,让当前Java代码可以使用Scanner
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("请输入学生的成绩1 ~ 100:");
        score = sc.nextFloat();//不同类型的变量 复制的不同
        
        /* 
        验证用户输入数据的合法性 
        如果用户输入的数据不合法,终止程序!!!
        不合法: 输入数据 > 100 或者 < 0
        */
        if (score > 100 || score < 0) {
            System.out.println("输入数据不合法!!!");
            // 程序退出
            System.exit(0);
        }
        
        /* 成绩等级判断 */
        if (score >= 90 && score <= 100) {
            System.out.println("A");
        } else if (score >= 80) {
            System.out.println("B");
        } else if (score >= 70) {
            System.out.println("C");
        } else if (score >= 60) {
            System.out.println("D");
        } else {
            System.out.println("E");
        } 
    }
}

总结

分支结构用于处理代码中出现的一些需要判断,并且按条件处理的情况!!!
    1. 条件约束考虑清楚
    2. 处理的过程考虑清楚
    3. 数据类型选择

练习

    a. 用户输入一个【整数】,判断该整数是奇数还是偶数  
        奇数,打印 这是一个奇数
        偶数,打印 这是一个偶数


​import java.util.Scanner;
class Demo11 {
	public static void main(String[] args) {
		int num = 100;
		
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个整数");
		num = sc.nextInt();
		 
		if (num % 2 != 0) {
			System.out.println("这个是一个奇数");
		} else {
			System.out.println("这个是一个偶数");
		}
	}
}


    b. 用户输入一个【浮点类型数据(float类型)】  
        判断大于99.99F 告知用户,您是VVIP
        小于等于99.99F 告知用户 您不是VIP
        

import java.util.Scanner;
class Demo12 {
	public static void main(String[] args) {
		float num = 0.0F;
		
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入消费积分");
		num = sc.nextFloat();
		
		if (num >99.99) {
			System.out.println("您是VIP");
		} else {
			System.out.println("您还不是VIP");
		}
	}
}		

        
    c. 用户输入一个【整数】,判断当前用户的游戏段位是什么  
    【考虑用户输入合法性问题】
        小于等于1000,青桐
        1000 - 1200 白银
        1200 - 1400 黄金
        1400 - 1600 白金
        1600 - 1800 钻石
        1800 - 2000 大师
        2000以上 王者
        

import java.util.Scanner;
class Demo13 {
    public static void main(String[] args) {
        int num = 1000;
        
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数");
        num = sc.nextInt();
        
        if (num < 0) {
            System.out.println("输入数据不合法");
            System.exit(0);
        }
        
        if (num <= 1000) {
            System.out.println("青铜");
        } else if (num <= 1200) {
        System.out.println("白银");
        } else if (num <= 1400) {
        System.out.println("黄金");
        } else if (num <= 1600) {
        System.out.println("白金");
        } else if (num <= 1800) {
        System.out.println("钻石");
        } else if (num <= 2000) {
        System.out.println("大师");
        } else {
        System.out.println("王者");
        }
    }
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值