流程控制

流程控制

一、流程控制语句

1.可以控制程序的执行流程

(1) 顺序结构

从上往下,依次执行

(2) 选择结构

1) if 语句
格式一:if(判断体){
            执行体;
        }

执行流程:
  先执行判断体的值,看其返回值是true还是false
  如果是true,运行执行体
  如果是false,就不运行执行体

注:如果执行体只有一行,格式一的写花括号可以省略,但并不是执行完判断体后会按照顺序结构运行执行体,只是隐藏了花括号而已
执行体有多行,花括号一定不能省略

格式二:if(判断体) {
            执行体1;
        }else {
            执行体2;
        }

执行流程:
  首先计算判断体的值,看其返回值是true还是false。
  如果是true,就运行执行体1;
  如果是false,就运行执行体2;

格式三:if(判断体1) {
            语句体1;
        }else if(判断体2) {
            语句体2;
        }else if(判断体3) {
            语句体3;
        }
        ...
        else {
            语句体n+1;
        }

执行流程:
  首先计算判断体1看其返回值是true还是false,
  如果是true,就执行语句体1,if语句结束。
  如果是false,接着计算判断体2看其返回值是true还是false,
  如果是true,就执行语句体2,if语句结束。
  如果是false,接着计算判断体3看其返回值是true还是false,
  如果都是false,就执行语句体n+1

案例:
1.判断闰年

2.判断输入的成绩

注意:else作用一般用于对范围外的错误值提示
3.BMI的计算公式是 体重(kg) / (身高*身高)

2) switch 语句
switch(表达式) {
              case 值1:
            语句体1;
            break;
            case 值2:
            语句体2;
            break;
            …
            default:    
            语句体n+1;
            break;
        }

执行流程
  先计算表达式的值(整形值或Sting类型)
  然后和case后面的值匹配,如果有就执行对应的语句,否则执行default控制的语句

案例:
1.判断季节

2.判断成绩

注意: ① 表达式可以是byte、short、int、char、枚举类型。JDK1.7以后,可使用String类型。 ② case语句后面只能使用常量表达式;且case后的值不能重复。 ③ 某个case分支如果没有提供break语句,则继续执行下一个case后的语句。

3)if 与 switch 语句的区别

switch语句和if语句的各自使用场景
① switch建议判断固定值(不建议是太多的固定值)的时候用
② if建议判断区间或范围的时候用
③ 针对int(整形)、String(字符串)、enum(枚举)类型数据 if语句和switch语句可以互换

(3) 循环结构

1) for 循环
for(初始化语句;判断体语句;迭代体语句) {
    循环体语句;
}

执行流程:
  ① 执行初始化语句
  ② 执行判断体,看其返回值是true还是false
      如果是true,就继续执行
      如果是false,就结束循环
  ③ 执行循环体语句;
  ④ 执行迭代体
  ⑤ 回到②继续执行

案例:
1.第一天给1块,第二天给前一天的2倍,多少天给了超过1000W

1
2
3
4
5
6
7
8
9
10
11
int sumMoney = 0;
int day = 1;
for(int j = 0; j<10000; j++){
day = day+1;
dayMoney*=2;
sumMoney+=dayMoney;
if(sumMoney > 10000000){
break;
}
}
System.out.println(day);*/
2) while 循环
初始化语句;
while(判断体语句) {
    循环体语句;
    迭代体语句;
    (控制条件语句;)//一般用于退出死循环操作
}

执行流程:
  ① 执行初始化语句
  ② 执行判断条件语句,看其返回值是true还是false
      如果是true,就继续执行
      如果是false,就结束循环
  ③ 执行循环体语句;
  ④ 执行控制条件语句
  ⑤ 回到②继续执行

案例:
1.输出 1 - 100 的奇数和

1
2
3
4
5
6
7
8
int a = 1, sum1 = 0;
while(a<=100){
if(a%2 != 0){
sum1 = sum1 + a;
}
a++;
}
System.out.println("奇数和为:"+sum1);
3) do……while 循环
初始化语句;
    do {
        循环体语句;
        迭代体语句;
        (控制条件语句;)——一般用于退出死循环操作
    }while(判断条件语句);

执行流程:
  ① 执行初始化语句
  ② 执行循环体语句;
  ③ 执行控制条件语句
  ④ 执行判断条件语句,看其返回值是true还是false
      如果是true,就继续执行
      如果是false,就结束循环
  ⑤ 回到②继续。

4) 死循环问题

两种最简单的死循环格式
    while(true){…}
    for(;;){…}

一定要注意控制条件语句控制的那个变量的问题,不要弄丢了,否则就容易死循环

5) 三种循环语句的区别

① do…while循环至少执行一次循环体。(一般情况不用)
for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。
② for循环和while循环的区别
  如果想在循环结束后,继续使用控制条件的那个变量,用while循环,否则用for循环。不知道用哪个最好用for循环。因为变量及早的从内存中消失,可以提高内存的使用效率。

二、嵌套语句

流程控制语句可以互相进行嵌套操作
常见的嵌套:if语句与if语句嵌套(if语句+&&)
      while语句与if语句嵌套
      for语句与if语句嵌套
      for语句与for语句嵌套(while与while)
      if语句与if语句嵌套

案例:
1.九九乘法表

1
2
3
4
5
6
7
8
//九九乘法表
for(int i=1; i<10; i++){
for(int j = 1; j < 10; j++){
if(i>=j)
System.out.print(j+"*"+i+"="+i*j+" ");
}
System.out.println("");
}

2.输出*直角三角形

1
2
3
*
**
***
1
2
3
4
5
6
for (int i = 0; i < 3; i++) {//行
for (int j = 0; j < i+1; j++) {//列
System.out.print("*");
}
System.out.println();
}
1
2
3
*
***
*****
1
2
3
4
5
6
7
8
for (int i = 1; i < 6; i++) {
if(i%2 != 0) {//判断是奇数就执行循环
for (int j = 0; j < i; j++) {
System.out.print("*");
}
System.out.println();//换行
}
}//for

3.画出倒等腰三角形

1
2
3
*****
***
*
1
2
3
4
5
6
7
8
9
10
11
12
for (int i = 0; i < 3; i++) {//确定行数
for (int j = 0; j < i; j++) {//画出左边空位
System.out.print(" ");
}
for (int j = 0; j < 3-i; j++) {//画出三角形左边
System.out.print("*");
}
for (int j = 0; j < 2-i; j++) {//画出三角形右边
System.out.print("*");
}
System.out.println();
}

三、控制语句

(1) 使用范围
  break——break用在switch或循环中
  continue——continue用在循环中
  return——return返回某个值或结束方法

(2) return和break以及continue的区别
  return是结束方法
  break是退出当前整个循环
  continue是终止本次循环继续下次循环

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Control{
public static void main(String [] args){
//break在循环中的作用
//输出1-10,但到4执行break
for(int a = 1; a<=10; a++){
System.out.print(a);
if(a == 4){break;}
}
System.out.println();
System.out.println("------------------------");
//continue在循环中的作用
//输出1-10,但到4执行continue
for(int a = 1; a<=10; a++){
if(a == 4){continue;}
System.out.print(a);
}
System.out.println();
System.out.println("------------------------");

return;
//return之后的代码不会执行
}
}

(3) 通过标记控制跳转语句

1
2
3
4
5
6
outer: for (int i = 0; i <= 10; i++) {
System.out.println("i = "+i);
inner: for(int j = 1; j <= 10; j++) {
System.out.println("j = "+j);
break outer;
}
文章作者: Hai
文章链接: http://yoursite.com/2019/07/13/流程控制/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Hai
打赏
  • 微信
  • 支付宝