if分支结构
1. 代码运行过程中的常见的结构
顺序结构
代码从上到下,从左至右执行
分支结构
代码满足不同的条件,执行不同的程序,输出不同的结果
循环结构
代码中存在需要多次执行的情况,这里会用到循环结构
2. 分支结构
2.1 if 分支结构
if ( 条件判断 ) {
语句体
}
执行流程:
当程序运行到if结构时,首先执行条件判断,条件判断的结构时一个boolean类型,
如果条件判断为true,执行语句体,为false,不能执行语句体。
最后执行大括号以外
假设你有十块钱,煎饼果子五块钱一个,用if分支结构语句模拟一下卖煎饼的过程。
/*
if分支结构的演示:
假设你有十块钱,煎饼果子五块钱一个,用if分支结构语句模拟一下卖煎饼的过程。
*/
class Demos{
public static void main(String[] args){
int money = 10;
if (money >= 5){
System.out.println("煎饼果子来一个!");
money -= 5;
System.out.println("余额" + money + "元");
}
System.out.println("大括号之后的代码。");
}
}
判断一个字符是不是大写的英文字母?
class Demo1{
/*
判断一个字符是不是大写的英文字母?
*/
public static void main(String[] args){
//首先定义一个字符char的变量
char ch = '我';
//然后用if分支结构来判断是不是大写英文字母
if (ch >= 'A' && ch <= 'Z'){
System.out.println("这是一个大写的英文字母!");
}
//接下来继续按照顺序结构执行代码
System.out.println("接下来执行这一行代码!");
}
}
判断一个字符是不是英文字符?
/*
判断一个字符是不是英文字符?
*/
class Demo2{
public static void main(String[] args){
//首先,需要一个字符类型的变量,并且初始化
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("执行这一段代码!");
}
}
判断一个年份是不是闰年?
class Demo3{
/*
判断一个年份是不是闰年?
判断是不是闰年的条件是:
能被4整除,但不能被100整除,或者能被400整除 的年份就是闰年
*/
public static void main(String[] args){
//年份是整数,所以变量的数据类型是int类型
int year = 2008;
//条件是 ( year % 4 == 0 && year != 0 ) || year % 400 == 0
if (( year % 4 == 0 && year != 0 ) || year % 400 == 0 )
{
System.out.println("是闰年");
}
//接下来按照顺序结构执行这一行代码
Sytem.out.println("接下来执行这一行代码!");
}
}
if else 分支结构
/*
if else 分支结构:
*/
if ( 条件判断 ) {
ture语句体
} else {
false语句体
}
执行流程:
代码执行到if else 结构运行,首先判断if之后的条件判断为ture,执行ture语句体,如果条件判断为false,执行false语句体。
工资判断:
月收入5000元以上的要缴税
月收入5000元以下的不需要缴税
/*
工资判断:
月收入5000元以上的要缴税
月收入5000元以下的不需要缴税
*/
class Demo4{
public static void main(String[] args){
//工资是一个浮点类型的数据,这里使用的是double类型
double salary = 5800.0;
if (salary > 5000){
System.out.println("需要缴税");
}else{
System.out.println("不需要缴税");
}
}
}
判断一个字符是不是数字字符?
/*
判断一个字符是不是数字字符?
*/
class Demo5{
public static void main(String[] args){
//需要判断的是一个数字字符,这里需要的是一个chare类型的变量
char ch = '我';
//这里的判断是一个字符数据判断
if(ch >= '0' && ch <= '9'){
System.out.println("该字符是一个数字字符");
}else{
System.out.println("该字符不是一个数字字符");
}
}
}
if else if 分支结构
if ( 条件1 ){
处理方式1
}else if(条件2) {
处理方式2
}else if (条件3) {
处理方式3
}else {
无匹配最终处理方式
}
执行流程:
代码执行带if else if结构,从上至下匹配if之后小括号里边的内容,条件匹配成功,执行对应的处理方式,结束分支结构运行。
如果没有任何一个条件匹配,执行else中的语句,也会终止条件匹配。
【注意】
else if 个数没有限制,可以有多个!
判断用户购物VIP等级
100 ~ 1000 铜牌会员
1001 ~ 5000 银牌会员
5001 ~ 10000 金牌牌会员
10001 ~ 50000 钻石会员
50001 黑钻会员
/*
用户购物VIP等级
100 ~ 1000 铜牌会员
1001 ~ 5000 银牌会员
5001 ~ 10000 金牌牌会员
10001 ~ 50000 钻石会员
50001 黑钻会员
*/
class Demo6{
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("黑钻会员");
}
}
}
划分学生的成绩的等级
条件:
90 ~ 100 优秀
80 ~ 90 良好
70 ~ 80 中等
60 ~ 70 及格
60 以下 不及格
/*
学生成绩的等级划分:
90 ~ 100 优秀
80 ~ 90 良好
70 ~ 80 中等
60 ~ 70 及格
60 以下 不及格
*/
class Demo7{
public static void main(String[] args){
//因为成绩考虑在0.5的情况,需要使用浮点数据类型
float score = 59F;
//成绩等级的判定
if (score >= 90 && score <=100){
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("不及格");
}
}
}
打玩这些代码之后你是不是有许多的疑惑?
这么麻烦?
每次只能修改代码执行一个学生的成绩的查询?
而且要是万一代码打错了101 或者 -1 怎么办?
【补充知识】
Scanner
Scanner是Java中提供的用于从控制台输入数据到代码中的一种方式。
Scanner 使用流程
1.导包
固定格式:
import java.until.Scanner;
放在class代码上一行
2.固定格式:【初期只了解这么多]
Scanner sc = new Scanner(System.in)
3.选择执行对应的方法,从键盘上获取对应的数据
获取int类型 int类型的变量 = sc.nextTnt();
获取float类型 float类型的变量 = sc.nextFloat();
获取double类型 double 类型的变量=sc.nextDouble
获取char 类型 char类型的变量 = sc.nextLine().charAt(0);
【补充知识 用户友好性】
代码运行需要站着用户的角度来思考问题。用户进行操作时,需要给予用户足够的提示和引导,告知用户当前操作如何完成,考虑代码的友好性!!
【补充知识 用户输入数据的合理性判断】
还是用上边学生成绩这个例子
//导包操作
import java.util.Scanner;
class Demo8{
public static void main(String[] args){
//先设置变量这里用浮点型
float score = 0.0F;
//需要一个Scanner
Scanner sc = new Scanner(System.in);
//提示用户操作
System.out.println("请输入学生的成绩");
score = sc.nextFloat();
//验证用户输入数据的合法性
if(score > 100 || score < 0){
System.out.println("输入的数据不合理!");
//程序退出
System.exit(0);
}
//然后是成绩的判定
if (score >= 90 && score <=100){
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("不及格");
}
}
}