【 流程控制语句 】

  • 顺序结构:程序从上到下一行一行执行,直到结束。
  • 单if语句:决定方法体执行,或者不执行跳过(有或者无)
int age = 20;
if (age >= 18) {
    System.out.println("进入网吧,前台开号,打开电脑");
    System.out.println("开始high,biubiubiu~");
    System.out.println("遇到了一群猪队友,开始骂街……");
    System.out.println("结账走人");
}
System.out.println("回家吃饭");
  • 标准的if-else语句(二者选其一,不会两个都要,也不会两个都不要)
int num = 6;
if (num % 2 == 0) { // 如果余数为0,说明是偶数
    System.out.println("偶数");
} else {
        System.out.println("奇数");
}
  • 扩展、复合的if-else if-else语句(三者或者三者以上,选其一)
int x = -10;
int y;
if (x >= 3) {
    y = 2 * x + 1;
} else if (-1 < x && x < 3) {
    y = 2 * x;
} else {
    y = 2 * x - 1;
}
System.out.println(y);

标准的switch语句格式

switch(表达式){  
    case 常量表达式1:  语句1;
    case 常量表达式2:  语句2;
    …  
    case 常量表达式n:  语句n;
    default   :  语句n+1;
  }

流程:
“等于哪一个case,就从该位置向下执行代码,直到遇到break结束为止。”
注意
只有这些类型才能用在switch的小括号当中:
基本类型:byte/short/char/int
引用类型:从JDK 1.5开始,支持enum枚举;从JDK 1.7开始,支持String字符串

int day = 10;
switch (day) {
    case 1:
        System.out.println("星期一");
        System.out.println("Monday");
        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; // 最后一个break可以省略不写,但是非常不推荐省略它。
} // switch

switch语句当中的注意事项:
1. 多个case...break或者default...break,前后顺序可以颠倒。在标准格式当中,不会影响流程。
2. break可以省略不写,如果不写,程序将会继续向下执行。
3.“等于哪一个case,就从该位置向下执行代码,直到遇到break结束为止。”

一个经典的循环语句,通常由以下四个部分组成:
初始化语句】最先执行,而且就执行一次而已。
条件判断】如果成立,循环继续;如果不成立,循环停止。
循环体】每次循环都要重复做的内容。
步进语句】每次循环体执行之后,扫尾工作。

for循环格式

for (初始化语句; 条件语句; 步进语句) 
{ 
语句1 ; 
语句2 ; 
.... 
语句n ; 
}

如果不用循环,在执行重复操作的时候,会出现两个麻烦:
1. 不容易精确控制次数。
2. 如果需要修改,需要修改一大片。

for循环计算1-100内的偶数和

int sum = 0;    
for (int i = 1; i <= 100; i++) {
    if (i % 2 == 0) { // 如果是偶数
        sum += i; // 2, 4, 6... 100
    }
}
System.out.println("结果是:" + sum); // 2550

while循环语句格式

标准格式:
while (条件判断) {
    循环体;
}

扩展格式:
初始化语句;
while (条件判断) {
    循环体;
    步进语句;
}
// 先写for循环
for (int i = 1; i <= 10; i++) {
    System.out.println("我错啦!" + i);
}
// 翻译成为while循环
int i = 1; // (1) 初始化语句
while (i <= 10) { // (2) 条件判断
    System.out.println("我错啦!" + i); // (3) 循环体
    i++; // (4) 步进语句,其实也属于循环
}

do while循环语句格式

标准格式:
do {
    循环体
} while (条件判断);

扩展格式:
初始化语句;
do {
    循环体
    步进语句
} while (条件判断);
int i = 1; // (1) 初始化语句
do {
    System.out.println("原谅你啦!起来吧,地上怪凉哒!"); // (3) 循环体
    i++; // (4) 步进语句,其实也属于循环体
} while (i <= 10); // (2) 条件判断【注意分号】

for循环、while循环、do-while循环,互相有什么区别
1. for循环当中的变量作用域与其他二者不同。其他二者定义本来就在外面,所以超出循环之后还能继续用。
2. do-while循环第一次没有条件判断,先斩后奏;但是for循环、while循环都是第一次先判断再执行循环体。 如果循环的条件根本从来没有满足过,那么for循环和while循环将会执行0次;但是do-while无论条件如何,至少会有第一次。
3. 使用建议:凡是次数确定、范围确定,尽量多用for循环;否则次数不确定,多用while循环。

break关键字,既可以用在switch结构当中,也可以用在循环当中。
含义:只要执行了break,那么整个循环立刻结束

for (int i = 1; i <= 10; i++) {
    if (i == 4) { // 如果当前是第四次
        break; // 那么就打断整个循环,立即跳出循环!
    }
    System.out.println("第几次循环?" + i);
}

continue关键字,通常只在循环当中使用。
含义:立刻跳过“当前次循环剩余内容”马上开始下一次循环

for (int i = 1; i <= 10; i++) {
    if (i == 4) {
        continue; /* 四楼不会输出,直接跳过4楼,当次循环以后的代码不在执行,
紧接着执行步进语句。*/
    }
    System.out.println(i + "楼到了。");
}

三种循环在绝大多数情况下,可以互相转换,但是也有一些特例。
for循环当中的步进语句,因为在上方小括号里面有贵宾座,所以不会受到continue影响。
while/do-while循环,步进语句就在下方大括号里面,也会被continue跳过的。

for (int i = 1; i <= 5; i++) {
    if (i == 3) {
        continue;
    }
    System.out.println("Hello-" + i);
}
System.out.println("===========");

int i = 1;
while (i <= 5) {
    if (i == 3) {
        System.out.println("即将执行continue");
        continue;  // 接下来会进入死循环(永真循环)。
    }
    System.out.println("World-" + i);
    i++; // 这一行也会被continue跳过的
}

永远停不下来的循环,学名叫做“死循环”又称之为无限循环,或者是永真循环。

死循环的标准写法:
while (true) {
    循环体;
}

另外一种写法需要认识,一般不推荐:
for (;;) {
    循环体;
}

在循环嵌套当中,也可以使用break或者continue,但是要记住:
break或者continue默认只能作用于当前层次循环。
如果希望在内层循环使用控制语句,但是要控制外层循环,就需要使用“标签”写法:

标签名称: 外层循环 {
内层循环 {
    break/continue 标签名称;
}
}

示例一:

label: for (int hour = 0; hour < 24; hour++) {
    /*if (hour == 3) {
        break;
    }*/
    for (int minute = 0; minute < 60; minute++) {
        if (minute == 3) {
            break label; // 可以跳出外层循环
        }
        System.out.println(hour + "点" + minute + "分");
    }   
}

示例二:

int j = 2;
label1:
while (j > 0) {
    for (int i = 0; i <= 10; i++) {
        System.out.println("i=" + i); // 会输出i的值1-5
        if (i == 5) {
            break label1; // 跳出外层while循环
        }
    }
    System.out.println("这是一行代码");
    j--;
}

打印一个倒三角形:

方法一:
 // 使用for循环,初始化变量ii = 1,如果ii<=5进入循环,步进表达式ii++
 for (int ii = 1; ii <= 5; ii++) {
     // 5.第一套for循环, 初始化变量jj=1,如果jj<ii进入循环,步进表达式jj++
     for (int jj = 1; jj < ii; jj++) {
         //6.第一套for循环内部,不换行输出" ".
         System.out.print(" ");
     }
     //   7.第二套for循环,初始化变量mm=5,如果mm>=ii进入循环,步进表达式mm--
     for (int mm = 5; mm >= ii; mm--) {
         // 8.第二套for循环内部,不换行输出"* ".
         System.out.print("* ");
     }
     // 两套for循环外,输出换行
     System.out.println();
 }

方法二:

int z = 0;
for (int i = 0; i <= 5; i++) {
    for (int j = 1; j <= 5; j++) {
        if (j <= z) {
            System.out.print(" ");\=====
        } else {
            System.out.print("* ");
        }
        if (j == 5) {
            System.out.println();
        }
    }
    z++;
}

猜你喜欢

转载自blog.csdn.net/sugar_i/article/details/81003486