2020.11.3学习收获

结构化编程

结构化程式设计(英语:Structured programming)是1960年代开始发展起来的一种编程典范。它采用子程序、程式码区块、for循环以及while循环等结构来取代传统的goto。

应用代码一般是由三种结构组成:顺序结构、选择结构、循环结构

指导思想

自顶向下、逐步求精、模块化

编程过程

流程图是流经一个系统的信息流、观点流或部件流的图形代表。在企业中,流程图主要用来说明某一过程。这种过程既可以是生产线上的工艺流程,也可以是完成一项任务必需的管理过程。常见的绘制工具有Visio、PowerDesigner等。

  1. 圆角矩形表示“开始”与“结束”。
  2. 矩形表示行动方案、普通工作环节用
  3. 菱形表示问题判断或判定(审核/审批/评审)环节
  4. 用平行四边形表示输入输出 
  5. 箭头代表工作流方向

结构化编程的推论

任何复杂的问题都可以三种基本算法结构来描述:顺序、选择、循环。因此用计算机语句描述的程序也包含三种基本结构。

临时变量的生命周期(补充)

public class Test{
    public static void main(String[] args){
        long mm=0;
        {   
            System.out.println(mm);//语法正确,因为mm的范围包括了这个小范围
            System.out.println(kk);//语法错误,java要求变量必须是先定义后使用,先赋初值后使用
            //语法正确
            int kk=100;
            System.out.println(kk);//可以输出
        }
        System.out.println(mm);//语法正确,mm就是在这个范围内有效
        System.out.println(kk);//语法错误,因为kk只在上一个{}范围中有效
    }
}

条件分支语句

Java语言提供了两种判断语句:if语句和switch语句。这两种语句用于实现判断,当符合某些条件时执行某段代码,否则将不执行

语法: if(条件判断语句){代码A;}当条件成立时执行代码A,如果条件不成立则不执行代码A,而是直接执行if的下一句

if(条件){代码块1;}else{代码块2;}当条件成立时执行代码块1,如果条件不成立则执行代码块2。没有一种情况是同时执行代码块1和2

if(条件1){代码块1;}else if(条件2){代码块2;}...else{代码块n;}当条件1成立时执行代码块1,如果条件1不成立继续判断条件2,如果条件2成立则执行代码块2,依次类推。没有一种情况是同时执行代码块1和2

​ 说明:允许多个if之间进行相互嵌套

需求:要求输入学生性别,如果false则显示女

boolean sex=true;
Scanner sc=new Scanner(System.in);
sex=sc.nextBoolean();
if(sex){  //这里是一个简化写法,实际上就是true==sex
    System.out.println("男");
}else   //如果代码块中只有一条语句时,{}可写可不写
    System.out.println("女");

要求输入学生成绩(假设成绩都是整数),如果>85显示优秀,如果>70显示良好,如果>60显示及格,否则显示不及格

int score=0;//要求临时变量必须先定义后使用,必须先赋初值后使用
Scanner sc=new Scanner(System.in);
score=sc.nextInt();
if(score>85)
    System.out.println("优秀");
else{  //如果代码块多于一行,则{}不能省略,否则语法报错
    if(score>60){
        if(score>70)
            System.out.println("良好");
        else
            System.out.println("及格");
    }else{
        System.out.println("不及格");
    }
}

这种写法不建议使用,因为覆盖测试测试太麻烦,review代码非常困难

int score=0;//要求临时变量必须先定义后使用,必须先赋初值后使用
Scanner sc=new Scanner(System.in);
score=sc.nextInt();
if(score>85)
    System.out.println("优秀");
else if(score>70)
    System.out.println("良好");
else if(score>60)
    System.out.println("及格");
else
    System.out.println("不及格

开关分支语言switch

语法:

witch(表达式){

​ case 值1: 判断表达式的值是否在值1,如果相等则执行代码块1

​ 代码块1; break; 执行完成后,如果没有break,则自动执行后续语句,但是不进行判定。如果有break则立即中断switch的执行,跳到switch块的下一局继续执行

​ 多个case语句:

​ ... ...

​ default:

​ 如果所有的case都不能成立,则执行代码块n

​ 代码块n; break;

}

语法点:

  • 表达式的计算结果可以是整型【不允许long类型】,可以是char,同时允许是字串类型[String]

  • default的位置没有特殊要求,但是一定是所有的case值不相等时才会执行。但是为了增强可读性,所以一般建议写在所有的case之后

需求:输入月份,显示对应的本月的天数

public class Test1 {
    public static void main(String[] args) {
        int res = 0;
        System.out.println("请输入月份:");
        Scanner sc = new Scanner(System.in);
        int month = sc.nextInt();
        System.out.println("请输入年份:");
        int year = sc.nextInt();
        switch (month) {
        case 2:
            if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
                res = 29;
            else
                res = 28;
            break;
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            res = 31;
            break;
        case 4:  //注意,这里的比对只执行成功一次,比对成功则不会再次进行比对,即使遇到case语句。一旦开始执行语句块,则一定要有break语句,否则会一直执行下去,直到switch结束或者遇到第一个break
        case 6:
        case 9:
        case 11:
            res = 30; 
            break;
        default:
            res = -1;
            break;
        }
        if (res > 0)
            System.out.println(year + "年" + month + "月有" + res + "天!");
        else
            System.out.println("输入的年月不合法!");
    }
}

第二种写法

public class Test2 {
    public static void main(String[] args) {
        F1 ff = F1.AA;
        switch (ff) {//允许使用枚举类型,进行比对时实际上是比较枚举的序号
        case BB:
            break;
        default:
            break;
        }
        char cc = 'a';//允许是字符类型,不是字符串类型;比较是字符值的unicode编码值
        switch (cc) {
        case 'b':
            break;
        default:
            break;
        }
        String key = "abc";
        switch (key) {// 从JDK1.8开始,在switch中可以使用字符串类型,比对时实际上是比较字符串类型的hash值[考点]
        case "abc":
            break;
        default:
            break;
        }
        long key1 = 100;
        switch (key1) {// switch中的表达式可以使用整型,但是不能是long类型
        case 100:
            break;
        default:
            break;
        }
    }
}

enum F1 {
    AA, BB;
}

要求输入学生成绩(假设成绩都是整数),如果>=80显示优秀,如果>=70显示良好,如果>=60显示及格,否则显示不及格

public class Test3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int score=sc.nextInt();
        int key = score / 10;
        String res=null;
        switch (key) {
        case 10:
        case 9:
        case 8:    
            res="优秀";
            break;
        case 7:
            res="良好";
            break;
        case 6:
            res="及格";
            break;
        default:
            res="不及格";
            break;
        }
        System.out.println("学生成绩为:"+score+"评级为:"+res);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值