diff --git "a/21 \345\215\242\344\272\250\350\200\200/20221129Java \346\211\253\346\217\217\345\231\250\345\222\214\350\277\220\347\256\227\347\254\246.md" "b/21 \345\215\242\344\272\250\350\200\200/20221129 Java\346\211\253\346\217\217\345\231\250\345\222\214\350\277\220\347\256\227\347\254\246.md" similarity index 100% rename from "21 \345\215\242\344\272\250\350\200\200/20221129Java \346\211\253\346\217\217\345\231\250\345\222\214\350\277\220\347\256\227\347\254\246.md" rename to "21 \345\215\242\344\272\250\350\200\200/20221129 Java\346\211\253\346\217\217\345\231\250\345\222\214\350\277\220\347\256\227\347\254\246.md" diff --git "a/21 \345\215\242\344\272\250\350\200\200/20221130java \350\277\220\347\256\227\347\254\246\345\260\217\347\273\223if\347\273\223\346\236\204.md" "b/21 \345\215\242\344\272\250\350\200\200/20221130 java\350\277\220\347\256\227\347\254\246\345\260\217\347\273\223if\347\273\223\346\236\204.md" similarity index 100% rename from "21 \345\215\242\344\272\250\350\200\200/20221130java \350\277\220\347\256\227\347\254\246\345\260\217\347\273\223if\347\273\223\346\236\204.md" rename to "21 \345\215\242\344\272\250\350\200\200/20221130 java\350\277\220\347\256\227\347\254\246\345\260\217\347\273\223if\347\273\223\346\236\204.md" diff --git "a/21 \345\215\242\344\272\250\350\200\200/20221202 java.md" "b/21 \345\215\242\344\272\250\350\200\200/20221202 java.md" new file mode 100644 index 0000000000000000000000000000000000000000..9e54f83bffbfbf6770ec15ec9e5d76b5e75ad93c --- /dev/null +++ "b/21 \345\215\242\344\272\250\350\200\200/20221202 java.md" @@ -0,0 +1,192 @@ +# switch语句 + +## switch语法和执行流程 + +```java +switch(表达式){ + case 值1: + System.out.println(""); + break; + case 值2: + System.out.println(""); + break; + case 值3: + System.out.println(""); + break; + case 值4: + System.out.println(""); + break; + defalut: + System.out.println(""); + break; +} +执行流程: +1、首先计算表达式的值. +2、依次和case后面的值进行比较,如果有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束. +3、如果所有的case后面的值和表达式的不匹配,就会执行defalut里面的语句体,然后结束整个switch语句. + + + 1、表达式(将要匹配的值)取值可以为:byte,short,int,char.JDK5以后是可以枚举的,JDK7以后是可以有string的,但是布尔类型是不支持的. + 2、case后面要跟的是和表达式进行比较的值. + 3、break:中断语句,结束switch语句. + 4、case后面只能是字面量不能是变量. + 5、case给出的值不能重复. +``` + +## switch和if的区别 + +```java +1、switch能做的if也能做,但是if能做的switch不一定能做。 +2、if可以判断某个区间,而switch不能,它只能判断某个具体的值。 +3、判断精准的值用switch,粗略的用if。 + +``` + +## switch穿透 + +```java +case后面不加break,就会穿透 + 1、有关字符的比较用equls + 2、字符 char i = sc.next()charAt(0); + 3、swith支持字符串(不支持布尔类型) +``` + +# 作业 + +##### 计算三种车费 + +```java + +public static void main(String[] args) { + //三家出租车的车费计算 + Scanner sc = new Scanner(System.in); + System.out.println("请输入出租车类型:"); + String lx= sc.next(); + System.out.println("请输入路程:"); + double lc= sc.nextDouble(); + if (lc<=3){ + switch (lx){ + case "夏利": + System.out.println("夏利的车费为3元"); + break; + case"富康": + System.out.println("富康的车费为4元"); + break; + case"桑塔纳": + System.out.println("桑塔纳的车费为5元"); + } + } + else if (lc>3){ + switch (lx){ + case"夏利": + System.out.println("夏利的车费为:"+(3+(lc-3)*2.1)); + break; + case"富康": + System.out.println("富康的车费为:"+(4+(lc-3)*2.4)); + break; + case"桑塔纳": + System.out.println("桑塔纳的车费为:"+(5+(lc-3)*2.7)); + } + } + } +} + +``` + +##### 计算今天是今年的第几天 + +```java +public class D2 { + public static void main(String[] args) { + Scanner sc=new Scanner(System.in); + System.out.println("请输入年份:"); + int year= sc.nextInt(); + if (year%4==0 && year%100==0 && year%200==0){ + System.out.println("今年是闰年,一月:31天,二月:28天,三月:31天,四月:30天,五月:31天,6月:30天,7月31天,8月31天,9月30天,10月31天,11月30天,12月 31天"); + System.out.println("请输入月份:"); + int month1= sc.nextInt(); + System.out.println("请输入几日:"); + int day= sc.nextInt(); + switch (month1){ + case 1: + System.out.println("今天是今年的第"+day+"天"); + break; + case 2: + System.out.println("今天是今年的第"+(31+(day))+"天"); + break; + case 3: + System.out.println("今天是今年的第"+(60+(day))+"天"); + break; + case 4: + System.out.println("今天是今年的第"+(91+(day))+"天"); + break; + case 5: + System.out.println("今天是今年的第"+(121+(day))+"天"); + break; + case 6: + System.out.println("今天是今年的第"+(152+(day))+"天"); + break; + case 7: + System.out.println("今天是今年的第"+(182+(day))+"天"); + break; + case 8: + System.out.println("今天是今年的第"+(213+(day))+"天"); + break; + case 9: + System.out.println("今天是今年的第"+(244+(day))+"天"); + case 10: + System.out.println("今天是今年的第"+(274+(day))+"天"); + break; + case 11: + System.out.println("今天是今年的第"+(305+(day))+"天"); + case 12: + System.out.println("今天是今年的第"+(335+(day))+"天"); + } + }else{ + System.out.println("今年是平年,一月:31天,二月:29天,三月:31天,四月:30天,五月:31天,6月:30天,7月31天,8月31天,9月30天,10月31天,11月30天,12月 31天"); + System.out.println("请输入月份:"); + int month2= sc.nextInt(); + System.out.println("请输入几日:"); + int day= sc.nextInt();{ + switch (month2){ + case 1: + System.out.println("今天是今年的第"+day+"天"); + break; + case 2: + System.out.println("今天是今年的第"+(31+(day))+"天"); + break; + case 3: + System.out.println("今天是今年的第"+(61+(day))+"天"); + break; + case 4: + System.out.println("今天是今年的第"+(92+(day))+"天"); + break; + case 5: + System.out.println("今天是今年的第"+(122+(day))+"天"); + break; + case 6: + System.out.println("今天是今年的第"+(153+(day))+"天"); + break; + case 7: + System.out.println("今天是今年的第"+(183+(day))+"天"); + break; + case 8: + System.out.println("今天是今年的第"+(214+(day))+"天"); + break; + case 9: + System.out.println("今天是今年的第"+(245+(day))+"天"); + case 10: + System.out.println("今天是今年的第"+(275+(day))+"天"); + break; + case 11: + System.out.println("今天是今年的第"+(306+(day))+"天"); + case 12: + System.out.println("今天是今年的第"+(336+(day))+"天"); + } + } + } + } +} + +``` +