程序的基本结构
Java的语言控制结构归为7类:1.if-else语句。2.switch-case语句。3.while语句。4.do-while语句。5.for语句。6.break语句。7.continue语句。这7种控制结构可以分为选择结构和循环结构二种,他们和顺序结构一起,构成了Java程序全部的控制流程。
顺序结构
顺序结构:就是指没有特殊控制结构时候程序结构。顺序结构以语句(带分号的句子)为单位,从左到右,由上到下依次执行。
顺序结构工作原理如下图:*

选择和分支结构
选择结构:根据条件判断结果来决定程序流程。
选择结构的工作原理如下图:
Java使用if语句、if-else语句和switch-case语句进行选择。
条件语句:if-else
- if语句
语法
if(条件表达式){
语句块;
}
上述语法中,条件表达式可以是任何一种逻辑表达式,结果为true则执行大括号{ }中的语句块,然后顺序执行后面的其他代码;反之则跳过大括号{ }中的语句块,直接执行后面的其他代码。
例如
import java.util.Scanner;
public class Demo_one {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入学生的成绩");
int score = sc.nextInt();
System.out.println("你的考试成绩是:"+score);
if(score < 60){
System.out.println("对不起,你的成绩不合格");
}
}
}
- if-else语句
语法
if(条件表达式){
语句块1;
}else{
语句块2;
}
上述语法中,在原有的if语句基础上添加else语句,原有功能不变,但当条件表达式的返回值为false时,程序将执行else中的语句块2。
例如
import java.util.Scanner;
public class Demo_one {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入学生的成绩");
int score = sc.nextInt();
System.out.println("你的考试成绩是:"+score);
if(score < 60){
System.out.println("对不起,你的成绩不合格");
}else{
System.out.println("恭喜你,你的成绩合格了");
}
}
}
- 多重if-else语句
多重if-else语句是指:一条if语句,后面跟多条else语句,代表多种不同的判断条件,执行符合的那个判断条件后紧跟的语句块。
语法
if(条件表达式1){
语句块1;
}else if(条件表达式2){
语句块2;
}else{
语句块3;
}
当满足条件表达式1的时候,执行语句块1;满足条件表达式2的话,执行语句块2;如果都不满足,则执行语句块3。
import java.util.Scanner;
public class Demo_one {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入学生的成绩");
int score = sc.nextInt();
System.out.println("你的考试成绩是:"+score);
if(score < 60){
System.out.println("对不起,你的成绩不合格");
}else if(score >= 60 && score <70){
System.out.println("你及格了");
}else if(score >= 70 && score <80){
System.out.println("你的成绩中等");
}else if(score >=80 && score < 90){
System.out.println("你的成绩优秀");
}else{
System.out.println("成绩格式错误,请重新输入");
}
}
}
- 嵌套if-else语句
语法
if(条件表达式1){
if(条件表达式2){
语句块1;
}else{
语句块2;
}
}else{
if(条件表达式3){
语句块3;
}else{
语句块4;
}
}
例如:
/**
*判断学生成绩等级
*/
import java.util.Scanner;
public class Demo_one {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入学生的成绩");
int score = sc.nextInt();
System.out.println("你的考试成绩是:"+score);
if(score <0 || score > 100){
System.out.println("成绩格式错误,请重新输入");
}else{
if(score < 60 ){
System.out.println("对不起,你的成绩不合格");
}else{
if(score < 70){
System.out.println("你的成绩为及格");
}else{
if(score < 80){
System.out.println("你的成绩为中等");
}else{
if(score < 90){
System.out.println("你的成绩为良好");
}else{
System.out.println("你的成绩为优秀");
}
}
}
}
}
}
}
分支语句:switch
当选择的分支语句较多时,使用多个if-else语句嵌套的实现方式不够直观,尤其是层次较多时,编写条件将相对复杂且容易出错。Java语言提供了另一种分支选择语句——switch,用于解决多支选择问题。
语法:
switch(整形表达式){
case 数值1 :语句1;
break;
case 数值2 :语句2;
break;
case 数值n :语句n;
break;
default:语句n+1;
}
语法说明
1.switch后的整型表达式中,可以放入一个变量或者一个表达式,但是其结果只能是byte、short、int、和char类型的数据。
&emps;2.switch语句将从匹配的case语句开始向下执行所有的语句,而且无须考虑下面这些case是否匹配,知道遇到break为止,这种特点也被称为switch语句的开关特性。
&emps;3.default后紧跟的是可选(即可以省略)的语句,它接受除了与case标签匹配之外的其他值。
例如:
/**
* 输入一个月份,判断季节
* */
import java.util.Scanner;
public class Demo_one {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输1~12的月份");
int score = sc.nextInt();
String season = "";
switch (score){
case 1:
case 2:
case 3:season = "春季";
break;
case 4:
case 5:
case 6:season = "夏季";
break;
case 7:
case 8:
case 9:season = "秋季";
break;
case 10:
case 11:
case 12:season = "冬季";
break;
default:System.out.println("月份输入错误");
return;
}
System.out.println("当前月份是:"+score+"月,"+"处于"+season);
}
}
多重if语句和switch语句的区别?
多重if语句匹配的是一个运算结果为Boolean型的表达式,可以是一个范围,比如成绩在60到69之间,而switch语句中使用case匹配的时候,往往是一个整数值,匹配的是一个点。这就是二者的最大区别。另外,switch语句多数情况下执行效率要比if-else高。
循环结构
while语句
while语句也被称为“当型循环语句”,其含义为:当条件满足时,执行某一段循环体。
语法:
while(条件表达式){
循环体;
}
while语句的执行顺序:
1.计算条件表达式结果,当结果为true时执行循环体,否则跳出while循环。
2.执行完循环体后,再次计算条件表达式的结果,决定是在次执行循环体还是退出循环。
while循环的流程如下图:
例如
/**
* 使用while语句计算1+2+3+。。+10的和
* */
public class Demo_one {
public static void main(String[] args) {
int i = 1;
int sum = 0;
while(i <= 10){
sum += i;
i++;
}
System.out.println("和是:"+sum);
}
}
do-while语句
do-while语句又称为“直到型循环语句”,其含义为:不管条件是否满足,先执行一次循环体,然后再进行条件判断。这是与while循环的不同之处。
语法:
do{
循环体;
}while(循环条件);
do-while循环的流程如下图:
例如
/**
* 使用do-while语句计算1+2+3+。。+10的和
* */
import java.util.Scanner;
public class Demo_one {
public static void main(String[] args) {
int i = 1;
int sum = 0;
do{
sum += i;
i++;
}while(i <= 10);
System.out.println("和是:"+sum);
}
}
for语句
语法:
for(表达式1;条件表达式;表达式2){
循环体;
}
for语句的执行顺序:
1.计算表达式1.通常情况下表达式1的赋值语句,作用是为了循环变量赋初值。
2.计算条件表达式结果,如果结果为true则执行循环体,否则跳出循环。
3.执行一次循环体后,在计算表达式,然后回到第二步。
for循环的流程如下图:
例如
/**
* 使用for语句计算1+2+3+。。+10的和
* */
import java.util.Scanner;
public class Demo_one {
public static void main(String[] args) {
int sum = 0;
for (int i=1;i<=10;i++){
sum += i;
}
System.out.println("和是:"+sum);
}
}
for循环开始执行时,初始化变量i的值为1,i<10,条件成立,进入循环体累加sum,之后i++执行使i的值变成2。依次类推,直到i的值为11时,不满足循环条件,跳出循环体。
break语句
break语句除了用于switch语句之外,还可以用于循环语句中,当循环语句中执行至break语句时将立即结束循环,执行循环体后面的语句。
例如:
/**
* 循环录入学生5门课的成绩并计算平均分,如果某个分数为负数,停止录入并提示录入错误
* */
import java.util.Scanner;
public class Demo_one {
public static void main(String[] args) {
int score; //每门课的成绩
int sum = 0; //成绩总和
int avg; //平均分
boolean wrong = true;
Scanner sc = new Scanner(System.in);
System.out.println("请输入学生姓名");
String name = sc.next();
//循环5次记录5门课的成绩
for(int i = 0;i < 5; i++){
System.out.println("请输入第"+(i+1)+"门课的成绩");
score = sc.nextInt();
if(score < 0){
wrong = false;
break;
}
sum = sum + score;
}
if(wrong){
avg = sum/5;//计算平均分
System.out.println(name+"的平均分是:"+avg);
}else{
System.out.println("成绩录入错误");
}
}
}
continue语句
continue语句用于结束本次循环。再循环语句中执行至continue语句时,循环体中continue语句后面的语句不会被执行,然后直接进行下一次循环的判断与执行。
例如:
/**
* 使用continue语句,循环录入成绩,并统计大于80分的学生比例
* */
import java.util.Scanner;
public class Demo_one {
public static void main(String[] args) {
int score; //每门课的成绩
int total; //班级人数
int num = 0; //成绩大于80的人数
Scanner sc = new Scanner(System.in);
System.out.println("请输入班级总人数");
total = sc.nextInt();
for(int i = 0;i < total; i++){
System.out.println("请输入第"+(i+1)+"位学生的成绩");
score = sc.nextInt();
if(score < 80){
continue;
}
num++;
}
System.out.println("80分以上的学生人数是:"+num);
double rate = (double) num / total * 100;
System.out.println("80分以上的学生所占比例是:"+rate);
}
}
嵌套循环
嵌套循环是指一个循环语句的循环体中包含另一个完整的循环语句。while语句、do-while语句以及for语句都可以互相嵌套一层或多层。
例如:
/**
* 使用for循环,打印九九乘法表
* */
import java.util.Scanner;
public class Demo_one {
public static void main(String[] args) {
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
System.out.print(i+"x"+j+"="+(i*j)+"\t");
}
System.out.println();
}
}
}
222

被折叠的 条评论
为什么被折叠?



