java——switch经典案例


代码讲解:
1、输入月工资金额,算出扣税金额。
规则: 工资3500及以下,扣税0
工资3500-5000之间,扣税0.1%
工资5000-8000之间,扣税0.2%
工资8000-10000之间,扣税0.3%
工资10000以上,扣税0.4%
例如:张三工资8500,扣税过程如下
8500-8000 =500 这部分的扣税是 5000.3%
8000-5000 =3000这部分的扣税是3000
0.2%
5000-3500 =1500这部分的扣税是15000.1%
3500以下的不扣税
张三的扣税总额= 500
0.3%+30000.2%+15000.1%

2、输入一个年份一个月份,打印该月的天数。
为什么要输入一个年份?
一三五七八十腊(31天)
四六九 十一(30天)
二(闰年29,平年28)

Scanner sc = new Scanner(System.in);
System.out.println("input a year:");
int y = sc.nextInt();
System.out.println("input a month:");
int m = sc.nextInt();
int day = 0;//存天数
if(m1||m3||m5||m7||m8||m10||m12){
day = 31;
}else if(m
4||m6||m9||m11){
day = 30;
}else{
if(y%400
0||y%4==0&&y%100!=0){
day=29;
}else{
day=28;
}
}
System.out.println("天数:"+day);

职教云活动1:
输入一个年份一个月份,打印该月的天数。
为什么要输入一个年份?
一三五七八十腊(31天)
四六九 十一(30天)
二(闰年29,平年28)

运行验证:输入自己的出生年月,打印当月天数。
代码和运行结果抓图。

职教云活动2:
假设你的习惯是:
周一、三、五学习,周二、四、六打球,周日看电影。
模仿课上示例,输入当前是周几(用1-7表示),
根据条件输出,“我该学习了”“我该打球了”“我该去看个电影,放松一下了”

代码和运行结果抓图。

判断条件有两类:
1、数据在某个区间(n>=80&&n<=90)
2、数据是一些点(n1||n2)

当条件是一些点的时候,可以用另一种语句结构
来替换if-else if-else

这个语句就是switch-case。

语法:
switch(表达式){
case 值1: 语句1;
case 值2:语句2;
case 值3:语句3;
...
default: 其他语句;
}
关键字:break
用于跳出switch所控制的语句块。

switch表达式会挨个和case后面的值对比,
如果表达式的值值1,从语句1开始执行。
如果表达式的值
值2,从语句2开始执行。
...
否则,执行其他语句。
如果遇到break,则直接退出switch语句块。

例子:输入一个整数,提示你输入的是星期几。
Scanner sc = new Scanner(System.in);
System.out.println("input a week:");
int w = sc.nextInt();
switch(w){
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的运行效果。

职教云活动3(有图片):
1、进入欢迎界面;
2、输入账号,密码(用整数);
3、如果输入不对,则退出整个程序;
System.exit(0);表示退出整个程序;
4、如果没有退出,则开始执行后续代码:
根据提示,输入相应的选项,得到相应的输出。

代码和运行结果抓图。


注意:
1、switch表达式结果的类型必须和case后面
的数据类型匹配,一般是整型,如int,char等,
1.7版本以后,也可以是字符串。但不能是浮点数。

2、case后面的值不能重复
3、break可有可无,看程序要求
4、default可有可无,其范围是除了所有case
以外的情况,无论其在前还是在后。
5、case有顺序,顺序不同结果不同。
6、case后面只能是常数。
7、case后面也可以没有语句。

Scanner sc = new Scanner(System.in);
System.out.println("input a week:");
int w = sc.nextInt();
switch(w){
case 1:
case 5:
case 3:
System.out.println("星期三");
break;
case 4:
case 2:
case 6:
System.out.println("星期六");
case 7:
System.out.println("星期日");
break;
default:
System.out.println("输入错误");
}
----三次执行结果--
input a week:
5
星期三

input a week:
7
星期日

input a week:
4
星期六
星期日

注意:switch语句会将小括号里面的表达式,和case后面的数挨个对比,找到
第一个与之匹配的(仅匹配一次),然后开始逐个执行从它开始后的每个case后面的语句,
直到遇到break;
就算case后面没有代码,只要看不到break,也会继续往下走。


小窍门:
eclipse格式化代码
(全选ctrl+A ,然后 ctrl+shift+f)
eclipse代码提示 alt+/
批量注釋 選中 - ctrl+/

补充知识:
java的三种注释:
单行
多行
文档注释


一、代码演示:
给定月份和年份,打印这个月的天数:
int m = 12;//月份
int y = 2014;//年份
int day = 0;//天数
switch(m){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:day=31;break; //前面任何一个月份出现,都会执行这句话
case 4:
case 6:
case 9:
case 11:day = 30;break;//前面任何一个月份出现,都会执行这句话
case 2:
if(y%4000||y%40&&y%100!=0){
day = 29;
}else{
day = 28;
}
default:System.out.println("月份只有1-12");
}
System.out.println(day);

职教云活动1:用switch语句实现输入一个年份,一个月份,
输出该月有几天的代码,把代码和运行结果截图。

二、代码分析
例1:
int x = 5,y = 1;
switch(x){
case 4: y++;
default: y--;//除了4和5以外的情况
case 5: y+=4;//5是第一个匹配的
}
System.out.println(y); //5

例2:
int x = 5,y = 1;
switch(x){
case 4: y++;
default: y--;//除了4和1以外的情况y=y-1=0
case 1: y+=4;
//由于没有break,这个还得执行,y=y+4=4
}
System.out.println(y); //4

例3:
int x = 5,y = 1;
switch(x){
case 4: y++;
default: y--;//除了4和1以外的情况y=y-1=0
break;
case 1: y+=4;//由于有break,这个不执行
}
System.out.println(y); //0

例4:
int x = 5,y = 1;
switch(x){
default: y--;//成立y=y-1=0
case 4: y++;break;
//继续执行y=y+1=1后跳出
case 1: y+=4;
}
System.out.println(y);

例5:
int x = 5;
switch(x--){
case 5: x--;
case 4: x+=4; break;
default: x--;
}
System.out.println(x);//7(为什么,描述分析过程)

写个随机数代码,生成学生学号提问??

例6:

int x = 10;
switch(x){
case 10:
case 5 :
case 20: x++;
default : x++;
case 30: x++;break;
case 40: x++;
}
System.out.println(x);

例7:
int x = 5,y=1;
switch(x){
case 5 : x++;
case 10:
case 15: y++;break;
case 20: x++; y++;
default : x++; y++;
case 30: x++;break;
case 40: x++;
}
System.out.println(x); //6
System.out.println(y); //2


注意:switch语句会将小括号里面的表达式,和case后面的数挨个对比,找到
第一个与之匹配的(仅匹配一次),然后开始逐个执行各个case后面的语句,直到遇到break;
就算case后面没有代码,只要看不到break,也会继续往下走。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM