结构化编程
指导思想:自顶向下、逐步求精、模块化
编程过程
流程图:使用画图的方式来说明某个过程,常见的离线绘图工具:Visio或者PowerDesigner等;目前还有在线的绘图工具ProcessOn等
(1) 圆角矩形表示一个流程的开始或者结束点
(2) 矩形用于表示行动方案或者普通工作环节
(3) 菱形用于问题的分支判断或者审核、审批之类的判断环节
(4) 平行四边形来表示处理流程中输入输出
(5) 箭头线用于表示工作流的方向
结构化编程的推论
任何复杂的问题都可以使用三中基本算法结构来描述:顺序、选择和循环
条件分支语句
Java提供了两种判断语句if和switch,这两种语句用于实现条件判断,当复合某些条件时执行某段代码,否则不执行
if结构
语法:
当条件成立时执行代码段,如果条件不成立则不执行,而是直接执行if后面的下一句
if(判断条件){
代码段
}
当条件成立时执行代码段1,如果条件不成立则执行代码段2
if(判断条件){
代码段1;
}else{
代码段2;
}
允许if/else结构进行嵌套
if(判断条件1){
代码段1;
}else if(条件2){//条件1不成立且条件2成立
代码段2;
}else if(条件n){
代码段n;
}else{
代码段n+1;
}
例题1:要求输入学生性别,如果false则显示女
Scanner sc= new Scanner(System.in);
boolean bb = sc.nextBoolean();//接受boolean类型的数
if(bb == false){//简化写法if(!=bb){}
System.out.println("性别为女.");//输入值不是false是没有输出
}
例题2:
(1) 输入学生成绩,假设成绩都是整数,如果>=60显示及格,否则不及格
Scanner sc = new Scanner(System.in);
int score = sc.nextInt();
if(score>=60){
System.out.println("及格");
}else{
System.out.println("不及格");
}
(2) 输入学生成绩,假设成绩都是整数,如果>85显示优秀,>=70显示良好,>=60显示及格否则不及格
Scanner sc = new Scanner(System.in);
int 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("不及格");
}
//思考:这里的判断顺序能不能进行调整,例如先判断>=70再判断>=85?
//不能调整顺序,如果条件1成立则不会执行条件2的判定
开关分支语句
格式:
switch(表达式){
case 值1:计算表达式的值是否等于1,如果相等则执行代码块1.
代码块1;break;执行完毕后,如果没有break则继续向下执行,但是不做判断。如果有break语句则立即终止switch的执行,跳转到switch结构后的下句话开始执行。
case 值2:
代码块2;break;
......
default:
代码块n; break;
}
语法点:【考核点】
(1) 表达式的计算结果可以是整数(不允许long类型),可以是char,同时还允许是字符串类型(hashcode)
(2) default的位置实际上没有什么特殊要求,但是一定是所有的case值都不相等时才会执行。再具体开发中为了增强代码的可读性,一般建议写在所有case语句之后。
例题3:输入月份、显示对应的本月天数
System.out.println("请输入月份:");
Scanner sc = new Scanner(System.in);
int month = sc.nextInt();
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println("本月31天");
break;
case 2:
System.out.println("请输入年份:");
int year = sc.nextInt();
if(year%4==0 && year%100 !=0){
System.out.println("本月29天");
}else{
System.out.println("本月28天");
}
break;
case 4:
case 6:
case 9:
case 11:
System.out.println("本月30天");
break;
default:
System.out.println("月份输入错误");
break;
}
循环结构
循环就是重复做某一件事情,在Java程序中间,循环控制就是在某一条件下,控制程序重复执行某一个代码段直到遇到循环终止条件为止
循环语句也称为迭代语句,在Java与语句中间存在while、for和do…while三中循环语句
while循环
while循环是Java中最基本的循环语句,满足循环条件才执行循环体,如果不满足则不执行,所以有可能循环体执行多次,也有可能一次也不执行
例题4:计算1+2+3+4+…+100=5050
int res=0;//累加器用于存放每次循环体的执行结果
int k=1;//控制循环次序
while(k<=100){
res+=k++;//res=res+k; k++;
}
Syste.out.println("1+2+3+...+100="+res);
写法1:
int res=0;
int k=0;
while(k++<100)//由0开始比较
res+=k;//从1开始累加
System.out.println(res);
写法2:
int res=0;
int k=0;
while(++k<=100)
res+=k;
System.out.println(res);
写法3:
int res=0;
int k=1;
while(true){
res+=k;
if(++k>100){
break;
}
}
System.out.println(res);
break和continue的用法
例题5:计算100以内的奇数和
最直接思路:奇数相加,偶数跳过
int res=0;
int k=0<