JDK5以后可以是枚举
JDK7以后可以是字符串
case:后面的值就是要和表达式进行比较的值
break:表示程序到这里中断,跳出switch语句
default:如果所有的情况都不匹配,就执行这里,相当于if语句中的else
可以,不可以,JDK7以后可以
A:首先计算表达式的值
B:和每一个case进行匹配,如果有就执行对应的语句体,看到break就结束。
C:如果没有匹配,就执行default的语句体n+1。
A:case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
case就可以把值固定。
可以省略,但是结果可能不是我们想要的。
会出现一个现象:case穿透。
不是,可以在任意位置。但是建议在最后。
b:执行到末尾就结束了
//然后把case后面的值改为number,就会报错
A:键盘录入一个数字(1-7),输出对应的星期几。
C:键盘录入一个字符串的问题
D:根据给定的月份,案例:
键盘录入一个数据,根据这个数据,我们输出对应的星期? 键盘录入1,对应输出星期一 键盘录入2,对应输出星期二 键盘录入7,对应输出星期日 2:判断我们既可以使用if语句,也可以使用我们要讲解的switch语句 A:遇到左大括号缩进一个tab的位置。 B:关联不是很大的语句间空行 A:出一个选择题,然后供你选择。 B:键盘录入选择的数据。 C:根据选择来给出你选择的结论。
//出一个选择题,然后供你选择。 //由于我们现在没有办法键盘录入得到一个'A','B' //这样的东西,我就用65,66这样的值替代 //将来我们获取到这样的值以后,强制转换为字符类型 //键盘录入选择的数据。 //强制转换为字符类型 根据你键盘录入的字符串,判断是否有满足要求的,如果有就输出。 用switch语句实现键盘录入月份,输出对应的季节
A:键盘录入一个月份,用Scanner实现 A:针对结果是boolean类型的判断 B:针对一个范围的判断 C:针对几个常量值的判断 //这样写太麻烦了,我们使用一个我们不想使用的东西:case穿透
for(初始化语句;判断条件语句;控制条件语句){
如果这里是true,就继续
如果这里是false,循环就结束
a:判断条件语句无论简单还是复杂,结果是boolean类型
b:循环体语句如果是一条,可以省略大括号,但是不建议
c:有分号就没有左大括号,有左大括号就没有分号
g:在控制台打印水仙花数
j:统计1-1000之间同时满足如下条件的数据有多少个
for(初始化语句;判断条件语句;控制条件语句) { B:执行判断条件语句,看其返回值是true还是false 如果是true,就继续执行 如果是false,就结束循环 A:判断条件语句无论简单还是复杂结果是boolean类型。 B:循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。 C:一般来说:有左大括号就没有分号,有分号就没有左大括号
//这种做法不好,代码的重复度太高。 //所以呢,我们用循环改进 需求:请在控制台输出数据1-10 //如何改进呢?用循环改进 需求:求出1-10之间数据之和 由此可见我们要定义两个变量: 一个变量用于存储第一个加数,第一个加数其实保存的是以前的所有数据和。默认初始化值应该是0。 一个变量用于存储第二个加数,第二个加数其实就是每次的数据变化的值。 //这里的x其实是第二个加数
C:求出1-100之间奇数和(自己做) //这里的x其实可以直接从2开始 天将降大任于斯人也,必先盗其QQ,封其微博,收其wifi,夺其手机。让其静心学习Java欧耶。 需求:在控制台输出所有的”水仙花数” 我们都不知道什么叫"水仙花数",你让我怎么做呢? 所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。 举例:153就是一个水仙花数。 A:三位数其实是告诉了我们范围。
B:通过for循环我们就可以实现获取每一个三位数 但是麻烦是如何获取这个三位数的个,十,百位上的数据 我们如何获取一个数据的个,十,百呢? 假设有个一个数据:153 如果相同,就把该数据在控制台输出。 //三位数其实是告诉了我们范围。 //如果相同,就把该数据在控制台输出。 需求:统计”水仙花数”共有多少个 A:首先必须知道什么是水仙花数
所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。 举例:153就是一个水仙花数。 B:定义统计变量,初始化值是0 C:三位数告诉了我们范围,用for循环就可以搞定 D:获取每一个三位数的个,十,百的数据 F:如果满足要求就计数。 //定义统计变量,初始化值是0 //三位数告诉了我们范围,用for循环就可以搞定 //获取每一个三位数的个,十,百的数据 //如果满足要求就计数。
请在控制台输出满足如下条件的五位数 个位+十位+千位+万位=百位 A:五位数就告诉了我们范围。 B:分解每一个五位数的个,十,百,千,万位上的数据 C:按照要求进行判断即可 //五位数就告诉了我们范围。 //分解每一个五位数的个,十,百,千,万位上的数据 //按照要求进行判断即可 需求:请统计1-1000之间同时满足如下条件的数据有多少个: A:定义统计变量,初始化值是0
B:1-1000之间是一个范围,用for很容易就可以实现。 C:每个数据要同时满足如下要求 D:如果满足条件,统计数据++即可,最后输出统计变量 //定义统计变量,初始化值是0 //1-1000之间是一个范围,用for很容易就可以实现。 每个数据要同时满足如下要求
通过查看这个格式,我们就知道while循环可以和for循环等价转换。
while循环的基本格式: 通过这个格式,我们就可以看到其实和for循环是差不多的。 for(初始化语句;判断条件语句;控制条件语句) {
把for语句的练习用while改进
练习:用while循环实现 左边:求出1-100之和 右边:统计水仙花数有多少个 for(初始化语句;判断条件语句;控制条件语句) { 需求:统计水仙花数有多少个
for语句的那个控制条件变量,在循环结束后不能在使用了。
而while的可以继续使用。
for适合于一个范围的判断
while适合次数不明确的
使用区别:如果你想在循环结束后,继续使用控制条件的那个变量,用while循环,否则用for循环。不知道用for循环。 因为变量及早的从内存中消失,可以提高内存的使用效率。 其实还有一种场景的理解: 如果是一个范围的,用for循环非常明确。 如果是不明确要做多少次,用while循环较为合适。 //这里不能在继续访问了 //这里是可以继续访问的
b:小芳存钱问题(break以后才能做)
我国最高山峰是珠穆朗玛峰:8848m,我现在有一张足够大的纸张,厚度为:0.01m。 请问,我折叠多少次,就可以保证厚度不低于珠穆朗玛峰的高度? A:定义一个统计变量,默认值是0 B:最高山峰是珠穆朗玛峰:8848m这是最终的厚度 我现在有一张足够大的纸张,厚度为:0.01m这是初始厚度 C:我折叠多少次,就可以保证厚度不低于珠穆朗玛峰的高度?
折叠一次有什么变化呢?就是厚度是以前的2倍。 D:只要每次变化的厚度没有超过珠穆朗玛峰的高度,就折叠,统计变量++ //定义一个统计变量,默认值是0 //最高山峰是珠穆朗玛峰:8848m这是最终的厚度 //我现在有一张足够大的纸张,厚度为:0.01m这是初始厚度 //只要每次变化的厚度没有超过珠穆朗玛峰的高度,就折叠,统计变量++ //折叠一次有什么变化呢?就是厚度是以前的2倍。
需求:小芳的妈妈每天给她2.5元钱,她都会存起来,但是, 每当这一天是存钱的第5天或者5的倍数的话,她都会花去6元钱, 请问,经过多少天,小芳才可以存到100元钱。 A:小芳的妈妈每天给她2.5元钱 D:经过多少天,小芳才可以存到100元钱。 E:这一天是存钱的第5天或者5的倍数的话,她都会花去6元钱, 说明要判断dayCount的值,如果对5整除就减去6元钱。
由此还隐含了一个问题,就是如果不是5的倍数天的话,钱要累加 F:因为不知道是多少天,所以我用死循环,一旦超过100元我就退出循环。 //每天要存储的钱是2.5元 //存钱的初始化值是0 //最终存储不小于100就不存储了 //因为不知道是多少天,所以我用死循环, //一旦超过100元我就退出循环。