选择结构-Java学习日记
/* 选择结构: 也被称为分支结构。 选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码。 Java语言提供了两种选择结构语句: if语句 语句定义格式1: if(关系表达式){ 语句体; } 代码2; 执行流程: 1、先判断关系表达式中的结果值,注意无论这里的关系表达式是否复杂,结果一定要是boolean类型 2、如果关系表达式的结果是true的话,就进入大括号内,执行语句体。 3、如果关系表达式的结果是false的话,就不进入大括号内,也就是不执行语句体。继续执行if后面的代码2,直到程序结束。 */ //需求:判断键盘录入的数据是否小于100 //创建键盘录入对象 Scanner sc = new Scanner(System.in); System.out.println("请输入一个数字:"); int number = sc.nextInt(); if(number<100){ System.out.println("数字"+number+"是小于100的"); } /* if语句编写的注意事项: 1、关系表达式中的结果一定要严格遵循结果是boolean类型的规则 2、如果if语句体是由一条语句组成的时候,可以省略大括号,否则不能省略,如果省略,默认只拿语句体中的第一行作为if语句体 推荐,永远不要省略大括号!!!!! 3、如果在小括号后面,大括号前面加上了分号,其实表示这个if语句有一个空语句体 后面大括号中的代码就当作一个普通的代码块去执行 */ //需求:判断键盘录入的数据是否大于50且小于100 //创建键盘录入对象 Scanner sc = new Scanner(System.in); System.out.println("请输入一个数字:"); int number = sc.nextInt(); //java不支持连续比较 50<number<100 if(number>50 & number<100){ System.out.println("数字"+number+"是小于100的"); System.out.println("这是在if语句中的吗?"); } --------------------------------------------- /* if语句定义格式2: if(关系表达式){ 语句体1; }else{ 语句体2; } 执行流程: 1、先判断关系表达式中的结果值,注意无论这里的关系表达式是否复杂,结果一定要是boolean类型 2、如果关系表达式的值是true的话,执行语句体1,语句体2不会执行 3、如果关系表达式的值是false的话,执行语句体2,不执行语句体1 4、无论关系表达式中的值是true还是false,只执行if和else中语句的其中一个。 */ //创建键盘录入对象 Scanner sc = new Scanner(System.in); System.out.println("请输入你是男生还是女生:(1:男生 2:女生)"); int number = sc.nextInt(); if(number==1){ System.out.println("你是男生,请走男厕所"); }else { System.out.println("你是女生,请走女厕所"); } /* if语句定义格式3: if(关系表达式1){ 语句体1; }else if(关系表达式2){ 语句体2; }else if(关系表达式3){ 语句体3; } ... else{ 语句体n+1; } 执行流程: 1、首先判断关系表达式1中的值,如果是true,执行语句体1,执行完语句体1后结束整个if语句 2、如果关系表达式1的值是false的话,判断下一个关系表达式2,如果是true重复步骤1,如果是false一次类推 3、如果所有的关系表达式都不满足的话,最后执行else中的语句体n+1 需求: 通过把学生考试成绩分等级来引出if语句的第三种格式 90-100 优秀 80-90 好 70-80 良 60-70 及格 60一下 不及格 注意: 为了程序与的严谨性,推荐给出一个默认的处理,当所有的关系表达式都是false的时候,就会执行这里的代码。 */ //创建键盘录入对象 Scanner sc = new Scanner(System.in); System.out.println("请输入一个学生的成绩:"); int score = sc.nextInt(); if(score>=90 & score<=100){ System.out.println("优秀"); }else if(score>=80 & score<90){ System.out.println("好"); }else if(score>=70 & score<80){ System.out.println("良"); }else if(score>=60 & score<70){ System.out.println("及格"); }else if(score>=0 & score<60){ System.out.println("不及格"); }else { System.out.println("输入的数据有误!"); }
/* 选择结构: 也被称为分支结构。 选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码。 Java语言提供了两种选择结构语句: if语句 语句定义格式1: if(关系表达式){ 语句体; } 代码2; 执行流程: 1、先判断关系表达式中的结果值,注意无论这里的关系表达式是否复杂,结果一定要是boolean类型 2、如果关系表达式的结果是true的话,就进入大括号内,执行语句体。 3、如果关系表达式的结果是false的话,就不进入大括号内,也就是不执行语句体。继续执行if后面的代码2,直到程序结束。 */ //需求:判断键盘录入的数据是否小于100 //创建键盘录入对象 Scanner sc = new Scanner(System.in); System.out.println("请输入一个数字:"); int number = sc.nextInt(); if(number<100){ System.out.println("数字"+number+"是小于100的"); } /* if语句编写的注意事项: 1、关系表达式中的结果一定要严格遵循结果是boolean类型的规则 2、如果if语句体是由一条语句组成的时候,可以省略大括号,否则不能省略,如果省略,默认只拿语句体中的第一行作为if语句体 推荐,永远不要省略大括号!!!!! 3、如果在小括号后面,大括号前面加上了分号,其实表示这个if语句有一个空语句体 后面大括号中的代码就当作一个普通的代码块去执行 */ //需求:判断键盘录入的数据是否大于50且小于100 //创建键盘录入对象 Scanner sc = new Scanner(System.in); System.out.println("请输入一个数字:"); int number = sc.nextInt(); //java不支持连续比较 50<number<100 if(number>50 & number<100){ System.out.println("数字"+number+"是小于100的"); System.out.println("这是在if语句中的吗?"); } --------------------------------------------- /* if语句定义格式2: if(关系表达式){ 语句体1; }else{ 语句体2; } 执行流程: 1、先判断关系表达式中的结果值,注意无论这里的关系表达式是否复杂,结果一定要是boolean类型 2、如果关系表达式的值是true的话,执行语句体1,语句体2不会执行 3、如果关系表达式的值是false的话,执行语句体2,不执行语句体1 4、无论关系表达式中的值是true还是false,只执行if和else中语句的其中一个。 */ //创建键盘录入对象 Scanner sc = new Scanner(System.in); System.out.println("请输入你是男生还是女生:(1:男生 2:女生)"); int number = sc.nextInt(); if(number==1){ System.out.println("你是男生,请走男厕所"); }else { System.out.println("你是女生,请走女厕所"); } /* if语句定义格式3: if(关系表达式1){ 语句体1; }else if(关系表达式2){ 语句体2; }else if(关系表达式3){ 语句体3; } ... else{ 语句体n+1; } 执行流程: 1、首先判断关系表达式1中的值,如果是true,执行语句体1,执行完语句体1后结束整个if语句 2、如果关系表达式1的值是false的话,判断下一个关系表达式2,如果是true重复步骤1,如果是false一次类推 3、如果所有的关系表达式都不满足的话,最后执行else中的语句体n+1 需求: 通过把学生考试成绩分等级来引出if语句的第三种格式 90-100 优秀 80-90 好 70-80 良 60-70 及格 60一下 不及格 注意: 为了程序与的严谨性,推荐给出一个默认的处理,当所有的关系表达式都是false的时候,就会执行这里的代码。 */ //创建键盘录入对象 Scanner sc = new Scanner(System.in); System.out.println("请输入一个学生的成绩:"); int score = sc.nextInt(); if(score>=90 & score<=100){ System.out.println("优秀"); }else if(score>=80 & score<90){ System.out.println("好"); }else if(score>=70 & score<80){ System.out.println("良"); }else if(score>=60 & score<70){ System.out.println("及格"); }else if(score>=0 & score<60){ System.out.println("不及格"); }else { System.out.println("输入的数据有误!"); }
/* 选择结构第二种:switch 语句定义格式: switch(表达式){ case 常量值1: 语句体1; break; case 常量值2: 语句体2; break; case 常量值3: 语句体3; break; ... default: 语句体n+1; break; } 名词解释: 1、switch:表示它是java中的一个选择结构语句 2、表达式:是进行选择匹配的内容,表达式具有一个结果值,而java中switch的表达式的值可以是byte,short,int,char JDK1.5之后可以是枚举 JDK1.7之后可以是String 3、case:匹配的内容,后面跟上与表达式结果做比较的值,如果匹配到,就执行对应的case中的语句体。 4、常量值:这里只能是一个常量值,不可以是变量!!!!!!! 5、语句体:当有匹配的case的时候,执行对应的语句体。 (思考一个问题,switch语句和if语句一样吗?只能执行一个case中的语句体吗?如果不是,是由什么来控制的?) 6、break: 一般情况下,每一个语句体执行完后,都会跟上一个break,表示跳出整个switch选择 (思考:break能不能不写,不写会发生什么情况?) 7、default: 如果所有的case都没有被匹配到的话,最终会执行default中的语句体内容。 (思考:default能不能不写?如果写上,一定要放在某尾吗?) 执行流程:***** 1、首先会计算表达式中的结果值 2、拿着这个结果值,与case后面的常量值自上而下的做匹配,如果匹配到一样的值,就会执行对应case中的语句体内容 3、执行完语句体后,会紧接着执行后面的break语句,执行完break语句后,会结束整个switch选择 4、如果所有的case都没有匹配到对应的值后,会执行default中的语句体内容,执行完后执行break,跳出整个switch选择 注意事项: 1、case后面匹配的常量值不能重复 */ //创建键盘录入对象 Scanner sc = new Scanner(System.in); //可乐 3,农夫山泉 2,元气森林 5,阿萨姆奶茶 4,红牛 6 //键盘录入字符串,表示你想要买的饮料 System.out.println("请输入你想要购买的饮料:"); String drink = sc.next(); switch (drink){ case "可乐": System.out.println("欢迎您购买可乐,共消费3元,欢迎下次光临!"); break; case "农夫山泉": System.out.println("欢迎您购买农夫山泉,共消费2元,欢迎下次光临!"); break; case "元气森林": System.out.println("欢迎您购买元气森林,共消费5元,欢迎下次光临!"); break; case "阿萨姆奶茶": System.out.println("欢迎您购买阿萨姆奶茶,共消费4元,欢迎下次光临!"); break; case "红牛": System.out.println("欢迎您购买红牛,共消费6元,欢迎下次光临!"); break; default: System.out.println("您想要的"+drink+"饮料暂时缺货,明天再来看看"); break; } /* switch语句使用的注意事项: 1、case后面只能是常量值,并且类型只能是byte,short,int,char,枚举,String当中的其中的一种 并且多个case后面的值不能重复。 2、break可以省略吗? 可以省略,如果省略可能会发生选择穿透,case匹配穿透。 如果匹配到的case中的语句体省略了break语句,那么再执行完当前case中的语句体后,会执行下面的语句体,直到遇到 break,结束switch选择。 3、default语句可以省略吗? 可以省略,但是一般情况下,不推荐省略。当匹配的值是固定的几个的时候,可以省略default 4、default语句一定要放在某尾吗? 不一定,经过测试发现,可以放在任意位置,default的执行是严格遵循在所有的case都不匹配的情况下,才会执行default swicth结束条件: 1、遇到break语句 2、正常执行结束 */ /* 控制流程语句: break; continue; return; break:使用场景: 在选择结构switch语句中 在循环语句中 离开使用场景的存在是没有意义的 */