01java基础-流程控制

流程控制


概述
执行结构

1996 年,计算机科学家 Bohm 和 Jacopini 证明了:任何简单或复杂的算法都可以由顺序结构分支结构循环结构这三种基本结构组合而成。 它们的共同点是都包含一个入口和一个出口,它们的每个代码都有机会被执行,不会出现死循环。

  1. 顺序结构

    顺序结构是一种基本的控制结构,它按照语句出现的顺序执行操作。

  2. 分支结构

    分支结构又被称为选择结构,根据条件成立与否来执行操作。

  3. 循环结构

    循环结构是一种重复结构,如果条件成立,它会重复执行某一循环体,直到出现不满足的条件为止。

分支结构
if
if(条件语句){} 
// ---------------------------------------
if (条件语句){}else{} 
// ---------------------------------------
if (条件语句){}else if(条件语句){} 
// ---------------------------------------
if (条件语句){}else if(条件语句){}else{}
switch
switch(表达式){ 
    case 取值 1: 语句块 1;break; 
    case 取值 n: 语句块 n;break; 
    default: 语句块 n+1;break;  // 可选
}

/* 注意:
	1. 表达式的返回值必须是下述几种类型之一:int, byte, char, short,String
	2. case 子句中的取值必须是常量,且所有 case 子句中的取值应是不同的;
	3. default 子句是可选的;
	4. break 语句用来在执行完一个 case 分支后使程序跳出 switch 语句块;
	5. 如果 case 后面没有写 break 则直接往下面执行!
	6. Case 后面的执行体可写{ }也可以不写{ }
*/

// 示例:5. 如果 case 后面没有写 break 则直接往下面执行!
package study.basic.day02;

import java.util.Scanner;

public class Demo03 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        String str1 = sc.nextLine();
        
        switch (str1) {
            case "1":
            case "2":
            case "3":
                System.out.println("春天");
                break;
            case "4":
            case "5":
            case "6":
                System.out.println("夏天");
                break;
            default:
                System.out.println("输入不合法");
                break;
        }
    }
}

循环结构
while
while(条件表达式){ 
    //语句块; 
}
do while
do{ 
    //语句块; 
}while(条件表达式);
for
for(初始化参数; 判断条件; 更新循环变量){
    循环体; 
}
/* 注意:
	执行顺序:初始化参数-> 进行条件判断 -> 执行循环体 -> 更新循环变量(先执行循环体 再 执行变量更新)
*/ 

/* 如果 判断条件 没写,默认为true 示例 如下:
for(int i=0;;i++) {
    System.out.println(i);
    if(i>=3)break;
}
执行结果:0 1 2 3
*/ 
// 示例
package study.basic.day02;

public class Demo_for_01 {
    public static void main(String[] args) {
        printGraph1();
        System.out.println();
        printGraph2();
        System.out.println();
        printGraph3();
        System.out.println();
        

    }
    
    /**打印三角形
     *  *
     *  ***
     *  *****
     *  *******
     *  i,行数:4
     *  j,列数:7,第0行循环打印1次*,第1行循环3次,第2行循环5次,第3行循环7次
     *  
     *  观察得出分析结果:
     *      每行*星号数=2*i+1
     * */
    public static void printGraph1() {
        
        for(int i=0;i<4;i++) {
            for(int j=0;j<2*i+1;j++) {    
                System.out.print("*");
            }
            System.out.println();
        }
    }
    
    
    /**打印三角形(下面图形中的-表示空格)
     *  ---*
     *  --***
     *  -*****
     *  *******
     *  i,行数:4
     *  空格,第0行循环打印3次空格,第1行循环2次,第2行循环1次,第3行循环0次
     *  *,      第0行循环打印1次*,第1行循环3次,第2行循环5次,第3行循环7次
     *  观察得出分析结果:
     *      每行空格数=3-i
     *      每行*星号数=2*i+1
     * */
    public static void printGraph2() {
        
        for(int i=0;i<4;i++) {
            for(int j=0;j<3-i;j++) {    
                System.out.print(" ");
            }
            for(int j=0;j<2*i+1;j++) {    
                System.out.print("*");
            }
            
            System.out.println();
        }
    }
    
    
    /**打印菱形(下面图形中的-表示空格)
     *  ---*
     *  --***
     *  -*****
     *  *******
     *  -*****
     *  --***
     *  ---*
     *  i,行数:7
     *  空格,第0行循环打印3次空格,第1行循环2次,第2行循环1次,第3行循环0次
     *  空格,第4行循环打印1次空格,第5行循环2次,第6行循环3次
     *  *,      第0行循环打印1次*,第1行循环3次,第2行循环5次,第3行循环7次
     *  *,      第4行循环打印5次*,第5行循环3次,第6行循环1次
     *  观察得出分析结果:
     *      如果i<4,每行空格数=3-i; 如果i>=4,每行空格数=i-3
     *      如果i<4,每行*星号数=2*i+1; 如果i>=4,每行*星号数=2*(6-i)+1
     * */
    public static void printGraph3() {
        
        for(int i=0;i<7;i++) {
            if(i<4) {
                for(int j=0;j<3-i;j++) {    
                    System.out.print(" ");
                }
                for(int j=0;j<2*i+1;j++) {    
                    System.out.print("*");
                }
            }else {
                for(int j=0;j<i-3;j++) {    
                    System.out.print(" ");
                }
                for(int j=0;j<2*(6-i)+1;j++) {    
                    System.out.print("*");
                }
            }
            
            
            System.out.println();
        }
    }
}

退出多重循环
// 多重循环时,break只跳出当前子循环
for(int i=0; i<4; i++) {
    for(int j=0; j<4; j++) {
        if(j == 3)break;
        System.out.println("i="+i+", j="+j);
    }
}

// 解决方法:给循环加名称
haha:for(int i=0; i<4; i++) {
    for(int j=0; j<4; j++) {
        if(j == 3)break haha;
        System.out.println("i="+i+", j="+j);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值