4. 流程控制语句
来源:互联网 发布:linux网络排查 编辑:程序博客网 时间:2024/06/05 22:37
1:switch语句(掌握)
(1)格式:
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
格式解释说明:
switch:说明这是switch语句。
表达式:可以是byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是字符串
case:后面的值就是要和表达式进行比较的值
break:表示程序到这里中断,跳出switch语句
default:如果所有的情况都不匹配,就执行这里,相当于if语句中的else
(2)面试题
switch语句的表达式可以是byte吗?可以是long吗?可以是String吗?
可以, 不可以, JDK7以后可以
(3)执行流程:
A:首先计算表达式的值
B:和每一个case进行匹配,如果有就执行对应的语句体,看到break就结束。
C:如果没有匹配,就执行default的语句体n+1。
(4)注意事项:
A:case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
B:default可以省略吗?
可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
特殊情况:
case就可以把值固定。
A,B,C,D
C:break可以省略吗?
可以省略,但是结果可能不是我们想要的。
会出现一个现象:case穿透。
最终我们建议不要省略
D:default一定要在最后吗?
不是,可以在任意位置。但是建议在最后。
E:switch语句的结束条件
a:遇到break就结束了
b:执行到末尾就结束了
(5)案例:
A:键盘录入一个数字(1-7),输出对应的星期几。
B:单项选择题
C:键盘录入一个字符串的问题
Strings = sc.nextLine();
D:根据给定的月份,输出对应的季节
class SwitchTest4 { publicstatic void main(String[] args) { //创建键盘录入对象 Scanner sc = new Scanner(System.in); //录入数据 System.out.println("请输入月份(1-12):"); int month = sc.nextInt(); //我们使用一个我们不想使用的东西:case穿透 switch(month) { case1: case2: case12: System.out.println("冬季"); break; case3: case4: case5: System.out.println("春季"); break; case6: case7: case8: System.out.println("夏季"); break; case9: case10: case11: System.out.println("秋季"); break; default: System.out.println("你输入的月份有误"); } }}
(6)if语句和switch语句各自的场景
A:if
针对boolean类型的判断
针对一个范围的判断
针对几个常量的判断
B:switch
针对几个常量的判断
2:循环语句(掌握)
(1)有三种: for, while, do...while
(2)for循环语句
A:格式
for(初始化语句;判断条件语句;控制条件语句){
循环体语句;
}
执行流程:
a:执行初始化语句
b:执行判断条件语句
如果这里是true,就继续
如果这里是false,循环就结束
c:执行循环体语句
d:执行控制条件语句
e:回到b
B:注意事项
a:判断条件语句无论简单还是复杂,结果是boolean类型
b:循环体语句如果是一条,可以省略大括号,但是不建议
c:有分号就没有左大括号,有左大括号就没有分号
C:案例
a:输出10次HelloWorld
b:输出1-10的数据
c:输出10-1的数据
d:求1-10的和
e:求1-100的和,求1-100的偶数和,求1-100的奇数和
f:求5的阶乘
g:在控制台打印水仙花数
h:统计水仙花个数
public class ForDemo6 { public static void main(String[] ages) { int count = 0; for (int x = 100; x <= 999; x++) { int ge =x % 10; int shi= x / 10 % 10; int bai= x / 10 / 10 % 10; if (x== (ge * ge * ge + shi * shi * shi + bai * bai * bai)) { count++; System.out.println(x); } } System.out.println("水仙花数一共为:"+count+"个"); }}
i:改进版的回文数
一个五位数
个位 =万位
十位 =千位
个位 +十位 +千位 +万位 =百位
public class ForDemo7 { public static void main(String[] ages){ for(int x =9999;x<100000;x++){ int ge=x%10; intshi=x/10%10; intbai=x/10/10%10; intqiao=x/10/10/10%10; intwan=x/10/10/10/10%10; if((ge==wan)&&(shi==qiao)&&(ge+shi+qiao+wan==bai)){ System.out.println(x); } } }}
j:统计1-1000之间同时满足如下条件的数据有多少个
x%3==2
x%5==3
x%7==2
public class ForDemo9 { public static void main(String[] age){ int count=0; for(int x=0;x<=1000;x++){ if((x%3==2)&&(x%5==3)&&(x%7==2)){ count++; } } System.out.println("1-10000之间同时满足条件的数据为:"+count+"个"); }}
(3)while循环
A:基本格式
while(判断条件语句) {
循环体语句;
}
扩展格式:
初始化语句;
while(判断条件语句){
循环体语句;
控制条件语句;
}
通过查看这个格式,我们就知道while循环可以和for循环等价转换。
B:while的练习
把for语句的练习用while改进
C:for和while的区别
a:使用上的区别
for语句的那个控制条件变量,在循环结束后不能在使用了。
而while的可以继续使用。
b:理解上的区别
for适合于一个范围的判断
while适合次数不明确的
举例:吃葡萄
D:案例:
a:我国最高山峰是珠穆朗玛峰:8848m,我现在有一张足够大的纸张,厚度为:0.01m。
请问,我折叠多少次,就可以保证厚度不低于珠穆朗玛峰的高度?
class WhileDemo5 { publicstatic void main(String[] args) { //定义一个统计变量,默认值是0 int count = 0; //最高山峰是珠穆朗玛峰:8848m这是最终的厚度 //我现在有一张足够大的纸张,厚度为:0.01m这是初始厚度 //为了简单,我把0.01变成1,同理8848就变成了884800 int end = 884800; int start = 1; while(start<end) { //只要每次变化的厚度没有超过珠穆朗玛峰的高度,就折叠,统计变量++ count++; //折叠一次有什么变化呢?就是厚度是以前的2倍。 start*= 2; System.out.println("第"+count+"次厚度是"+start); } //输出统计变量。 System.out.println("要叠"+count+"次"); }}
(4)do...while循环
A:基本格式
do {
循环体语句;
}while(判断条件语句);
扩展格式:
初始化语句;
do{
循环体语句;
控制条件语句;
}while(判断条件语句);
总结:通过查看格式,我们就可以看出其实三种循环的格式可以是统一的。
B:三种循环的区别
a:do...while循环至少执行一次循环体
b:for和while必须先判断条件是否是true,然后后才能决定是否执行循环体
(5)循环使用的注意事项(死循环)
A:一定要注意修改控制条件,否则容易出现死循环。
B:最简单的死循环格式
a:while(true){...}
b:for(;;){}
3:循环嵌套(掌握)
循环嵌套:就是循环语句的循环体本身是一个循环语句。
通过结果我们知道这样的一个结论:外循环控制行数内循环控制列数
需求:在控制台输出九九乘法表。
首先我们写出九九乘法表:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
...
1*9=9 2*9=18 3*9=27 ...
我们先把这个九九乘法表看出是这样的一个形状:
*
**
***
****
*****
******
*******
********
*********
注意:
'\x'x表示任意,这种做法叫转移字符。
'\t' tab键的位置
'\r' 回车
'\n' 换行
class ForForDemo3 { publicstatic void main(String[] args) { for(int x=0; x<9; x++) { for(inty=0; y<=x; y++) { System.out.print("*"); } System.out.println(); } System.out.println("--------------"); //为了使用数据,我们从1开始 for(int x=1; x<=9; x++) { for(inty=1; y<=x; y++) { System.out.print(y+"*"+x+"="+y*x+"\t"); } System.out.println(); } }}
4:控制跳转语句(掌握)
(1)break:中断的意思
A:用在循环(循环语句中加入了if判断的情况)和switch语句中,离开此应用场景无意义。
B:作用
a:跳出单层循环
b:跳出多层循环,需要标签语句的配合
要想实现这个效果,就必须知道一个东西。带标签的语句。
格式:
标签名:语句
class BreakDemo { publicstatic void main(String[] args) { //在switch 或 loop 外部中断 //break; //跳出单层循环 for(int x=0; x<10; x++) { if(x== 3) { break; } System.out.println("HelloWorld"); } System.out.println("over"); System.out.println("-------------"); wc:for(int x=0; x<3; x++) { nc:for(int y=0; y<4; y++) { if(y == 2) { //break nc; break wc; } System.out.print("*"); } System.out.println(); } }}
(2)continue:继续
A:用在循环中,离开此应用场景无意义。
B:作用
a:跳出一次循环,进入下一次的执行
C:练习题:
我想在控制台输出2次:“Java基础班“
我想在控制台输出7次:“Java基础班“
我想在控制台输出13次:“Java基础班“
public class ContinueDemo { public static void main(String[] ages) { for (int x = 1; x <= 10; x++) { if (x %3 == 0) { System.out.println(x +"Java基础班"); //控制台输出13次 // break; //控制台输出2次 // continue; //控制台输出7次 } System.out.println(x+ "Java基础班"); } }}
(3)return:返回
A:用于结束方法的,后面还会在继续讲解和使用。
B:一旦遇到return,程序就不会在继续往后执行。
5.简要(掌握)
1:switch语句的格式?针对格式的解释?以及注意事项?
格式:
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
格式解释说明:
switch:说明这是switch语句。
表达式:可以是byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是字符串
case:后面的值就是要和表达式进行比较的值
break:表示程序到这里中断,跳出switch语句
default:如果所有的情况都不匹配,就执行这里,相当于if语句中的else
注意事项:
A:case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
B:default可以省略吗?
可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
特殊情况:
case就可以把值固定。
A,B,C,D
C:break可以省略吗?
可以省略,但是结果可能不是我们想要的。
会出现一个现象:case穿透。
最终我们建议不要省略
D:default一定要在最后吗?
不是,可以在任意位置。但是建议在最后。
E:switch语句的结束条件
a:遇到break就结束了
b:执行到末尾就结束了
2:break,continue和return分别有什么用?
break:中断的意思
A:用在循环和switch语句中,离开此应用场景无意义。
B:作用
a:跳出单层循环
b:跳出多层循环,需要标签语句的配合
continue:继续
A:用在循环中,离开此应用场景无意义。
B:作用
a:跳出单层循环的一次,可以继续下一次
return:返回
A:用于结束方法的。
B:一旦遇到return,程序就不会在继续往后执行。
- 4. 流程控制语句
- 4. 流程控制语句
- 流程语句控制语句
- SQL流程控制语句
- 控制流程语句
- Oracle 流程控制语句
- 03 流程控制语句
- 流程控制语句
- SQL流程控制语句
- C#流程控制语句
- Java流程控制语句
- 流程控制语句
- 流程控制语句
- Shell流程控制语句
- java流程控制语句
- 流程控制语句
- C#流程控制语句
- ruby流程控制语句
- C# 在类中定义事件
- java基础----Date类
- QLabel实现双击事件
- 11月20日云栖精选夜读:围观阿里总部:边喝茶边搞技术是一种怎样的体验?
- 基于java的WebSocket的主动推送
- 4. 流程控制语句
- MapReduce之二次排序
- windows 08 IIS 7 发布FTP站点
- 迈吉客受邀参加《创意中国》, 85%超高支持率晋级年度盛典
- spss
- 狸窝
- nipype处理核磁数据(三)——MATLAB、SPM、ANTs、AFNI的安装
- 统计学学习笔记——(7)抽样分布
- 第一个博客测试