diff --git "a/08 \345\256\230\346\226\207\350\257\232/20221202 switch\350\257\255\345\217\245 if\350\257\255\345\217\245.md" "b/08 \345\256\230\346\226\207\350\257\232/20221202 switch\350\257\255\345\217\245 if\350\257\255\345\217\245.md" new file mode 100644 index 0000000000000000000000000000000000000000..881842cf2e9e01ebe9641d416723ea1af7a1cec9 --- /dev/null +++ "b/08 \345\256\230\346\226\207\350\257\232/20221202 switch\350\257\255\345\217\245 if\350\257\255\345\217\245.md" @@ -0,0 +1,149 @@ +## 笔记 + +### switch语句 + +~~~java +switch (表达式) { +case 1: +语句体1; +break; +case 2: +语句体2; +break; +... +default: +语句体n+1;//(默认,不满足前面条件,则执行) +break;//(可写可不写) +} + +//switch支持字符串判断,但不支持布尔变量。 +//有关扫描器中字符输入 +//char sd=sc.next().charAt(0); +~~~ + +##### 字符串不能直接比大小,判断相等要用equals比如要判断a是否等于b a.equals(b) equals相当于等于号。 + +##### 1.switch能做的 if都能做但是 switch不一定可以 + +##### 2.if可以判断一个范围(区间),而switch只能判断一个特定的值 + +##### 3.如果要判断的值比较精准而且值不多就可以使用switch去判断,如果是要判断一个区间的值,那就不考虑switch 要用if + +## 作业 + +###### 1.某市不同车牌的出租车3千米的起步价和计费分别为:夏利3元,3千米以外,2.1元/千米,富康4元,3千米以外,2.4元/千米; 桑塔纳5元,3千米以外,2.7元/千米。 编程实现从键盘输入乘车的车型及行车千米数,输出应付车费。 + +~~~java +import java.util.Scanner; + +public class AA { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + System.out.println("请输入车型:"); + String cx = sc.next(); + System.out.println("请输入公里数:"); + double gl =sc.nextDouble(); + switch (cx){ + case "夏利": + if (gl<=0){ + System.out.println("错误"); + }else if (gl<=3){ + double fy = 3; + System.out.println("费用为:" +fy); + } else if (gl>3) { + double fy = (gl-3) *2.1+3; + System.out.println("费用为:"+fy); + } + break; + case "富康": + if (gl<=0){ + System.out.println("错误"); + }else if (gl<=3){ + double fy = 4; + System.out.println("费用为:" +fy); + } else if (gl>3) { + double fy = (gl-3) *2.4+4; + System.out.println("费用为:"+fy); + } + break; + case "桑塔纳": + if (gl<=0){ + System.out.println("错误"); + }else if (gl<=3){ + double fy = 5; + System.out.println("费用为:" +fy); + } else if (gl>3) { + double fy = (gl-3) *2.7+5; + System.out.println("费用为:"+fy); + } + } + } +} +~~~ + +###### 2.使用switch和if语句算出今天是今年的第几天(提示: 以3月3日为例,应该先把前两个月的天数加起来,然后再加上3天即为本年的第几天:需要考虑闰年的情况,如果输入的年份是闰年且输入的月份大于或等于3,需要多加1天)。 + +~~~java +import java.util.Scanner; +public class bb { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + System.out.println("请输入年份:"); + int nf = sc.nextInt(); + System.out.println("请输入月份:"); + int yf = sc.nextInt(); + System.out.println("请输入号数:"); + int hs = sc.nextInt(); + int sum = 0; + int ey; + if (nf%4==0 && nf%100!=0 || nf %400==0){ + ey = 29; + }else { + ey=28; + } + + switch (yf){ + case 1: + sum=hs; + break; + case 2: + sum=31+hs; + break; + case 3: + sum=31+ey+hs; + break; + case 4: + sum=31+ey+31+hs; + break; + case 5: + sum=31+ey+31+30+hs; + break; + case 6: + sum=31+ey+31+30+31+hs; + break; + case 7: + sum=31+ey+31+30+31+30+hs; + break; + case 8: + sum=31+ey+31+30+31+30+31+hs; + break; + case 9: + sum=31+ey+31+30+31+30+31+31+hs; + break; + case 10: + sum=31+ey+31+30+31+30+31+31+30+hs; + break; + case 11: + sum=31+ey+31+30+31+30+31+31+30+31+hs; + break; + case 12: + sum=31+ey+31+30+31+30+31+31+30+31+30+hs; + break; + } + System.out.println(nf+"年"+yf+"月"+hs+"日"+"是今年第"+sum+"天"); + } +} +~~~ + + +