控制语句的学习

控制语句

结构化编程

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

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

指导思想

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

编程过程

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

1、圆角矩形表示“开始”与“结束”。

2、矩形表示行动方案、普通工作环节用

3、菱形表示问题判断或判定(审核/审批/评审)环节

4、用平行四边形表示输入输出

5、箭头代表工作流方向

结构化编程的推论

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

条件判断结构

选择结构用于判断给定的条件,然后根据判断的结果来控制程序的流程。主要的条件判 断结构有:if 结构和 switch 结构。而 if 结构又可以分为 if 单分支结构、if-else 双分支结构、 if-else if-else 多分支结构。

语法: 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

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

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

switch 多分支结构

语法结构:

switch (表达式) {
case 值 1:
语句序列 1;
[break];
case 值 2:
语句序列 2;
[break]; … … … … …
[default:
默认语句;]
}

语法点:

  • 表达式的计算结果可以是整型【不允许long类型】,可以是char,同时允许是字串类型[String]
  • default的位置没有特殊要求,但是一定是所有的case值不相等时才会执行。但是为了增强可读性,所以一般建议写在所有的case之后

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

package cutestFox01;

import java.util.Scanner;

public class Test002 {
	public static void main(String[] args) {
		//公历闰年遵循的规律为: 四年一闰,百年不闰,四百年再闰.
		int res = 0;
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入月份:");
		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 6:
		case 9:
		case 11:
		res = 30;
		break;
			
		default:
			res  =-1;
			break;
		}
		System.out.println(year+"年"+month+"月份有:"+res+"天");
	}
}

要求输入学生成绩(假设成绩都是整数),如果>=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);
	}
}

循环结构

循环就是重复做某一件事情。在Java程序中,循环控制即在某一情况下,控制程序重复执行某一条或多条语句,直到遇到终止条件为止

循环语句也称迭代语句,在Java语言中存在的while、for和do-while循环语句

循环结构分两大类,一类是当型,一类是直到型。

 当型: 当布尔表达式条件为 true 时,反复执行某语句,当布尔表达式的值为 false 时才停 止循环,比如:while 与 for 循环。

 直到型: 先执行某语句, 再判断布尔表达式,如果为 true,再执行某语句,如此反复,直 到布尔表达式条件为 false 时才停止循环,比如 do-while 循环。

while循环

while是Java中最基本的循环语句,满足条件才执行循环体,如果不满足条件则不执行。所以有可能循环体一次都不执行。

语法:while(条件){循环体;}当条件成立时反复执行循环体,每执行一次判断一次条件。

package cutestFox01;

public class Test003 {
	public static void main(String[] args) {
		int res = 0;
		int x = 1;
		while(x<=100) {
			res = res+x;
			x++;
		}
		System.out.println(res);
	}

}

需求:计算所有100以内奇数的和

public class Test{
	public static void main(String[] args){
		int res=0;
        int k=1;
        while(k<100){
            res+=k;
            k=k+2;
        }
        System.out.println(res);
	}
}

do/while循环

语法:do{循环体;}while(条件); 先执行循环体,然后进行条件判断,如果条件为true,则执行下次循环;如果条件为false则终止循环。

  • 不同于while循环的点:do/while循环至少执行循环体一次,而while循环有可能一次都不执行
    package cutestFox01;

    public class Test006 {
    
    	public static void main(String[] args) {
    		int res = 0;
    		int k = 1;
    		do {
    			res +=k++;
    		}while(k<101);
    		System.out.println(res);
    
    	}
    
    }
    

for循环

语法:for(表达式1;表达式2:表达式3){循环体;}这里不是逗号

  • 执行表达式1

  • 执行表达式2,一般表达式2是一个条件,如果条件为true则执行循环体;如果条件为false则终止循环

  • 执行循环体

  • 执行表达式3

  • 执行第2步骤

  • for 循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。for 循环在第 一次反复之前要进行初始化,即执行初始表达式;随后,对布尔表达式进行判定,若判定结 果为 true,则执行循环体,否则,终止循环;最后在每一次反复的时候,进行某种形式的“步 进”,即执行迭代因子。

  •  初始化部分设置循环变量的初值

  •  条件判断部分为任意布尔表达式

  •  迭代因子控制循环变量的增减
    package cutestFox01;

    public class Test007 {
    	public static void main(String[] args) {
    		int res = 0;
    		for(int k=0;k<101;k++) {
    			res+=k++; 
    		}
    		System.out.println(res);
    	}
    
    }
    

三种循环写法的选择

  • for循环一般用于可以明确循环次数的场景中

  • while循环一般用于不能预先确定循环执行次数的场景中

  • do/while循环一般用于不能预先确定循环执行次数,同时要求循环体至少执行一次的场景中

      													     2020年11月3日
    

猜你喜欢

转载自blog.csdn.net/qq_45874107/article/details/109476784
今日推荐