流程控制结构
程序流程有三种基本的控制结构,即顺序结构、选择结构和循环结构
if分支语句
第一种形式:【简单if语句】 第二种形式:【双分支语句】 第三种形式【多分支if语句】
if(布尔表达式){ if(布尔表达式){ if(表达式1){
语句 ; 语句1; 语句1;
} }else{ }else if(表达式2){
语句2; 语句2
} ......
}else if(表达式m){
语句m;
} else{
语句n;
}
第一种简单if语句
以下是一个简单的if语句的流程图示例:
如上图所示,if语句的执行步骤如下:
1. 首先,程序会判断括号内的条件是否为真。如果为真,程序会执行if语句的代码块;如果为假,则跳过if语句的代码块,继续执行后面的代码。
2. 如果条件为真,程序会执行if语句中花括号内的代码块。
3. 执行if语句代码块后,程序会接着执行后面的语句。如果没有后续语句,则代码执行结束。
tip:(1)表达式必须使用圆括号括起来,括号里边可以使用逻辑运算符,如&&;
(2)表达式:关系表达式或逻辑表达式
(3)“语句”可以使单语句也可以是复合语句
举个简单if语句例子:
输入一学生成绩,如大于等于60分,则输出“考试通过”
import java.util.Scanner;
public class IfDemo{
public static void main(String[] args){
Scanner scan =new Scanner(System.in);
System.out.println("请输入考试成绩:");
double score =scan.nextDouble();
if(score >=60){
System.out.println("考试通过");
}
}
}
第二种双分支语句
以下是双分支if语句的流程图:
其中,判断条件为一个布尔表达式,可以是任何可以返回布尔值(true或false)的表达式。
如果条件成立,程序将执行语句1并结束;否则,程序将执行语句2并结束。
tip:(1)关键字 if 后面必须有“表达式”,而关键字 else 后面不能有“表达式”。
(2) if 分支和 else 分支都是只能自动结合一条语句,当有多条语句时,必须用花括号括起来 构成复合语句(格式如下),因为复合语句在语法上相当于一条语句。
举个双分支if语句例子:
输入一学生成绩,如大于等于60分,则输出"考试通过",否则输出"考试不通过
import java.util.Scanner;
public class IfDemo{
public static void maon(String[] args){
Scanner scan =new Scanner(System.in);
System.out.println("请输入考试成绩:");
double score =scan.nextDouble();
if(score>=60){
System.out.println("考试通过");
}else{
System.out.println("考试不通过")
}
}
}
第三种多分支语句
以下是多分支if语句的流程图:
多分支if语句指的是有多个分支的if语句,即在满足不同条件时执行不同的代码块。在多分支if语句中,可以使用if-else if-else结构或者switch-case结构来实现。
if-else if-else结构的示例代码如下:
if (condition1) {
// code block 1
} else if (condition2) {
// code block 2
} else if (condition3) {
// code block 3
} else {
// code block 4 (default case)
}
在这个示例中,如果condition1成立,则执行code block 1;如果condition1不成立,检查condition2是否成立,如果成立则执行code block 2;如果condition2也不成立,检查condition3是否成立,如果成立则执行code block 3;如果condition3也不成立,则执行code block 4。
switch-case结构的示例代码如下:
switch (expression) {
case value1:
// code block 1
break;
case value2:
// code block 2
break;
case value3:
// code block 3
break;
default:
// code block 4 (default case)
break;
}
举个多分支语句例子
将百分制成绩转换为等级制成绩。转换标准如下:90分以上为“优”,80分以上“良”,70分以上为“中”,60分以上为“及格”,60分以下为“不及格”。
import java.util.Scanner;
public class ScoreDemo{
public static void main(String[] args){
Scanner scan new Scanner(System.in);
System.out.print("请输入学生成绩:");
int score =scan.nextInt();//变量score用于存储成绩
if(score>=90){
System.out.println("优");
}else if (score >=80){
System.out.println("良");
} else if (score>=70){
System.out.println("良");
}else if (score>=60){
System.out.println("及格");
}else{
System.out.println("不及格")
}
}
}
常见错误分析
1.将百分制成绩转换为等级制成绩。转换标准如下:90分以上为“优秀”。80分以上为“良”,70分以上为“中”,60分以上为"及格”,60分以下为“不及格”。
2.将百分制成绩转换为等级制成绩。转换标准如下:大于等于90分为“优秀”,小于90分大于80分为“良”,小于80分大于等于70分为“中”,小于70分大于等于60分为‘及格“,60分以下为”不及格“。
3.在编写程序的时候,很多同学经常用数学的思路来编写代码,在逻辑语句当中可能会编写成if(90>score>=80)这是惯用的数学思维,我们要把思路转换成编程语言,应该是这样(score<90&&score>=80)
4.我们在编写程序的时候,要整理好我们的清晰的逻辑。
import java.util.Scanner;
public class ScoreDemo{
public static void main(String[] args){
Scanner scan new Scanner(System.in);
System.out.print("请输入学生成绩:");
int score =scan.nextInt();//变量score用于存储成绩
if(score>=60){
System.out.println("及格");
}else if (score>90){
System.out.println("优秀");
} else if (score>=70){
System.out.println("良");
}else if (score>=80){
System.out.println("好");
}else{
System.out.println("不及格")
}
}
}
从这里看代码,条件编写是没有问题的,但是在逻辑上出现了问题,输入大于等于60的数,无论输多少,都是输出及格,这个时候就出现一种情况,其他条件没有运行出来,这串代码只有两种结果“及格”与"不及格"。出现逻辑错误,就达不到,我们分数分级的预想。