if
语句有三种格式
if (条件表达式) { 执行代码块; // 语句块 }
if (条件语句) { 执行代码块1; } else{ 执行代码块2; }
if (条件表达式1) { 执行代码块1; } else if (条件表达式2) { 执行代码块2; } .... else { 执行代码块n; }
使用说明:
条件表达式必须是布尔表达式(关系表达式或逻辑表达式)、布尔变量
语句块只有一条执行语句时,一对{}可以省略,但建议保留
if-else语句结构,根据需要可以嵌套使用
当if-else结构是“多选一”时,最后的else是可选的,根据需要可以省略
当多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓
当多个条件是“包含”关系时,“小上大下 / 子上父下”
例题:
代码示例:
// if-else 语句练习 import java.util.Scanner; // 导入Scanner类 class Exercise { public static void main(String[] args) { System.out.println("请输入成绩"); Scanner input = new Scanner(System.in); //System.in表示标准化输出,也就是键盘输出 int num = input.nextInt(); // 接收键盘输入数据 if (num == 100) { System.out.println("奖励一辆BMW"); } else if (num > 80 && num < 99) { System.out.println("奖励一台iphone xs"); } else if (num > 60 && num < 80) { System.out.println("奖励一个 iPad"); } else { System.out.println("没有奖励"); } } }
代码示例:
import java.util.Scanner; // 作用:用来构建Scanner对象 /* import的作用: 1. 加载已定义好的类或包 2. 导入支持类(可以是JDK基础类或者自己编写的类),可以供本类调用方法和属性。 */ // 彩票(lottery)游戏 class Lottery { public static void main(String[] args) { // Scanner scan = new Scanner(System.in); // Scanner实例化 / System.in表示标准化输出,也就是键盘输出 int value = (int)(Math.random() * 90 + 10); // 从[10 , 99]随机取值 System.out.println("随机数:" + value); System.out.println("请输入一个二位数"); Scanner input = new Scanner(System.in); //System.in表示标准化输出,也就是键盘输出 int num = input.nextInt(); // // 接收键盘输入数据 int numGe = num/10 , numShi = num%10; int valueGe = value/10 , valueShi = value%10; if(num == value) { System.out.println("奖金10000美元"); } else if(numGe == valueShi && numShi == valueGe) { System.out.println("奖金3000美元"); } else if(numGe == valueGe || numShi == valueShi) { System.out.println("奖金1000美元"); } else if(numGe == valueShi || numShi == valueGe) { System.out.println("奖金500美元"); } else { System.out.println("彩票作废"); } } }
代码示例:
import java.util.Scanner; // 构建Scanner对象 class Marriage { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("身高:(cm)"); int stature = scan.nextInt(); System.out.println("财富:(千万)"); double wealth = scan.nextDouble(); System.out.println("帅否:(true/false)"); boolean isHandsome = scan.nextBoolean(); if(stature > 180 && wealth > 1 && isHandsome) { System.out.println("我一定要嫁给他!!!"); } else if(stature > 180 || wealth > 1 || isHandsome) { System.out.println("嫁吧,比上不足,比下有余。"); } else { System.out.println("不嫁!"); } } }
知识点:从键盘获取不同类型的标量:需要使用
Scanner
类
import java.util.Scanner;
Scanner scan = new Scanner(System.in);
switch(表达式) { case 值1: 语句块1; break; case 值2: 语句块2; break; … case 值n: 语句块n; break; default: 语句块n+1; break; }
注意:
switch
(表达式)中表达式的值必须是下述几种类型之一:byte,short,char,int,枚举 (jdk 5.0),String (jdk 7.0);case
子句中的值必须是常量,不能是变量名或范围;break
(停止)语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾default
子句是可任选的。同时,位置也是灵活的。当没有匹配的case时,执行default例题:
1.使用 switch 把小写类型的 char型转为大写。只转换 a, b, c, d, e. 其它的输出 “other”。
提示:String word = scan.next(); char c = word.charAt(0); switch©{}
代码示例:
import java.util.Scanner; class Capital { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请输入a,b,c,d,e:"); String word = scan.next(); char c = word.charAt(0); switch(c) { case 'a': System.out.println("A"); break; case 'b': System.out.println("B"); break; case 'c': System.out.println("C"); break; case 'd': System.out.println("D"); break; case 'e': System.out.println("E"); break; } } }
2.对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。
代码示例:
import java.util.Scanner; // 导包,构建Scanner对象 class Grade01 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); // Scanner 实例化 System .out.println("请输入成绩:"); int num = scan.nextInt(); // 获取键盘输入数据 int grade = num/60; // 以下为 switch-case 语句 switch(grade) { case 1: System.out.println("合格"); break; case 0: System.out.println("不合格"); break; } } }
3.根据用于指定月份,打印该月份所属的季节。
3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季
代码示例:
import java.util.Scanner; class Senson { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请输入月份:"); int num = scan.nextInt(); switch(num) { case 3: case 4: case 5: System.out.print("春季"); break; case 6: case 7: case 8: System.out.print("夏季"); break; case 9: case 10: case 11: System.out.print("秋季"); break; case 12: case 1: case 2: System.out.print("冬季"); break; } } }
代码示例:
import java.util.Scanner; class DateText { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请输入2019年月份:"); int month = scan.nextInt(); System.out.println("请输入2019年天数:"); int day = scan.nextInt(); // 定义一个变量保存天数 int SumDays = 0; switch(month) { case 12: SumDays += 30; case 11: SumDays += 31; case 10: SumDays += 30; case 9: SumDays += 31; case 8: SumDays += 31; case 7: SumDays += 30; case 6: SumDays += 31; case 5: SumDays += 30; case 4: SumDays += 31; case 3: SumDays += 28; case 2: SumDays += 31; case 1: SumDays += day; break; } System.out.println((month + "月" + day) + "为2019年的第 " + SumDays + " 天"); } }
if
语句,又可以使用 switch
语句,应优先选择 switch
语句。(switch
语句效率高于 if
语句)if
语句的使用范围更广。因此,使用 switch-case
的,都可以使用 if-else
;但使用 if-else
的,不一定可以使用 switch-case