Java流程控制语句

程序的基本结构

 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

  1. 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("对不起,你的成绩不合格");
        }
    }
}
  1. 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("恭喜你,你的成绩合格了");
        }
    }
}
  1. 多重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("成绩格式错误,请重新输入");
        }
    }
}
  1. 嵌套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();
        }
    }
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值