Java选择结构与变量
一、基本if选择结构
- 语法:if(布尔表达式){ //代码块 } ==》对布尔表达式进行判断,为true执行代码块,为false跳过代码块
-
class Demo03 { public static void main(String[] args) { System.out.println("Hello World!"); // 判断一把刀是不是管制刀具 int knifeLen = 155; if(knifeLen >= 220){ System.out.println("这个刀子是管制刀具,要没收..."); } if(knifeLen < 220){ System.out.println("这个刀子不是管制刀具,可以携带..."); } } }
二、if...else选择结构
- 语法:if(判断条件){ 代码块1 } else{ 代码块2 }==》对布尔值进行判断,为true执行代码块1,为false执行代码块2
-
class Demo04 { public static void main(String[] args) { System.out.println("Hello World!"); int knifeLen = 150; // if...else if (knifeLen >= 220){ System.out.println("管制刀具"); }else{ System.out.println("非管制刀具"); } } }
三、多重if选择结构
- 语法:if(布尔表达式1){代码块1}else if(布尔表达式二){代码块2}else if(布尔表达式3){代码块3}else{代码块4}==》表达式1为true则不往下执行,为false则依次判断表达式2、表达式3,表达式都为false则执行代码块4
-
import java.util.Scanner; class Demo07 { public static void main(String[] args) { /* 键盘录入一个数字(1--7),输出对应日期需要上课的课程 1、导入Scanner 2、创建Scanner对象 3、提示输入日期1--7 4、获取日期 5、使用if判断,输出这一天需要上的课程 */ Scanner in = new Scanner(System.in); System.out.println("请输入查询星期几的课程(1--7)"); int day = in.nextInt(); // 5、使用if判断,输出这一天需要上的课程 if(day == 1){ System.out.println("今天是星期一,需要上语文课."); } else if(day == 2){ System.out.println("今天是星期二,需要上数学课."); } else if(day == 3){ System.out.println("今天是星期三,需要上英语课."); } else if(day == 4){ System.out.println("今天是星期四,需要上体育课."); } else if(day == 5){ System.out.println("今天是星期五,需要上语文课."); } else if((day == 6) || (day == 7)){ System.out.println("今天是星期" + day + ",需要休息."); } else{ System.out.println("您查询的课程不存在..."); } } }
四、嵌套if选择结构
- 语法:if(外层表达式){ if(内层表达式){//内层代码块1}else{//内层代码块2} }else{ //外层代码块}==》外层表达式为true在判断内层表达式,外层为false则直接输出外层代码块
- 注意:一个选择结构中,可嵌套另一个选择结构==》嵌套正确的情况下,支持任意组合
-
import java.util.Scanner; class Demo10 { public static void main(String[] args) { /* 模拟乘坐火车检票安检的过程 */ Scanner in = new Scanner(System.in); System.out.println("请出示你的车票(1=有票,0=无票):"); int ticket = in.nextInt(); // 判断有没有车票,如果有就可以去安检 if(ticket>=1){ // 提示输入安检情况 System.out.println("有没有携带违禁物品(true=有,false=无):"); boolean isDanger = in.nextBoolean(); // 判断安全情况 if(isDanger){ System.out.println("请跟我走一趟...."); }else{ System.out.println("安检通过,请排队候车..."); } }else{ // 无票,提示去买票 System.out.println("请先去购买车票..."); } } }
五、分支结构
- 语法:switch(变量|表达式){ case 值1:逻辑代码1;case值2:逻辑代码2;case值n:逻辑代码n default: 为满足时的逻辑代码 } ==》输入值相应的数值,返回对应的逻辑代码块,若没有对应的值则返回default内容
- 注意:当匹配的case执行后,不会自动退出整个结构,而是继续向下执行。 break关键字可在匹配的case执行后,跳出整个结构
-
import java.util.Scanner; class Demo13 { public static void main(String[] args) { /* 根据星期几输出上课的内容 1、导入Scanner 2、创建Scanner对象 3、提示输出星期几day 4、获取输入的值 5、使用switch判断输出课程内容 */ Scanner in = new Scanner(System.in); System.out.println("请输入今天是星期几(1--7):"); int day = in.nextInt(); // 5、使用switch判断输出课程内容 switch(day){ case 1: 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; case 7: System.out.println("今天是星期日,需要上语文课."); break; default: System.out.println("这个时间不存在..."); break; } } }
六、比较if和switch
import java.util.Scanner; class Demo15 { public static void main(String[] args) { /* 0 --59 不及格 60--69 及格 70--79 一般 80--89 良好 90--100 优秀 */ Scanner in = new Scanner(System.in); System.out.println("请输入考试成绩(0--100):"); int score = in.nextInt(); if((score<0) || (score>100)){ System.out.println("错误的分数"); }else{ // 合法的分数 if(score >= 90){ 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("不及格,体验一下男女混合双打..."); } } } }
总结:
-
-
month==3
-
score>=90
-
-
switch中case后面的值只能是byte,short、int、char、String范围内的值
-
无法使用范围进行操作,数字范围过大,或者内容不确定且情况复杂的时候不能使用switch
-
数值较少,内容固定的情况下可以使用switch
-
常量的判定推荐使用switch
-
七、局部变量
- 概念:
- 定义在方法中的变量
- 使用前必须先赋值---没有默认值
- 作用范围只在当前方法里面
- 在同一作用域中变量名字不能重复
- 声明周期是从创建到方法结束
-
class Demo16 { public static void main(String[] args) { /* 定义位置在方法中 使用前必须先赋值---没有默认的值 作用范围只在当前方法里面 在同一个作用域中变量名字不能重复 生命周期是从创建到方法结束 */ int age = 20; System.out.println("age=" + age); // int age = 22; // show(); age = 33; } public static void show() { System.out.println("age=" + age); } }