java的流程控制顺序、分支语句

流程控制语句的介绍

流程控制语句:通过一些语句,来控制程序【执行】流程

流程控制语句

1、顺序结构

Java程序默认的执行流程,没有特定的语法结构,按照代码的先后顺序,依次执行程序中大多数的代码都是这样执行的。

public class Test{
    public static void main(String[] arg){
        System.out.println("A");
        System.out.println("B");
        System.out.println("C");
    }
}

开始->语句A->语句B->语句C->结束      依次执行

2、分支结构 

if语句:

格式1:

if(判断条件){

        语句体;

}

执行流程:

①首先计算判断条件的结果

②如果条件的结果为true就执行语句体

③如果条件的结果为false就不执行语句体

格式2:

if(判断条件){

        语句体1;

}else{

        语句体2;

}

执行流程:

①首先计算判断条件的结果

②如果条件的结果为true就执行语句体1

③如果条件的结果为false就执行语句体2

格式3:

if(判断条件1){

        语句体1;

}else if(判断条件2){

        语句体2;

}else if(判断条件3){

        语句体3;

}.......

else{

        语句体n+1;

}

执行流程:

①首先计算判断条件1的结果

②如果条件的结果为true就执行语句体1

③条件的结果为false计算判断条件2的结果

④如果条件的结果为true就执行语句体2

⑤条件的结果为false计算判断条件3的结果

⑥如果条件的结果为true就执行语句体3

⑦判断条件都不满足那么就执行else里的语句体n+1

示例
public class IfDemo{
    public static void main(String [] args){
        IfDemo.ifTest1();
        IfDemo.ifTest2();
        IfDemo.ifTest3();
    }
    public static void ifTest1(){
        System.out.println("开始");
        int age = 18;
        if(age>=18){
            System.out.println("可以上网吧!")
        }
        System.out.println("结束");
    }
    public static void ifTest2(){
        System.out.println("开始");
        int age = 17;
        if(age>=18){
            System.out.println("可以上网吧!");
        }else{
            System.out.println("年龄未满18岁不可以上网吧!")
        }
        System.out.println("结束");
    }
    public static void ifTest3(){
        //键盘录入一个整数数值,表示用户的身份 1:会员 2:非会员 其他:您的输入有误
        Scanner scan = new Scanner(System.in);
        int num = scan.nextInt();
        if(num == 1){
            System.out.println("会员身份");
        }else if(num == 2){
            System.out.println("非会员身份");
        }else{
            System.out.println("您的输入有误");
        }
    }
}
import java.util.Scanner;

public class IfTest {
    public static void main(String[] args){
        IfTest.checkPassword();
    }
    public static void checkPassword(){
        for (;;){
            //准备Scanner键盘录入
            Scanner sc = new Scanner(System.in);
            //指挥键盘录入密码
            String next = sc.next();
            //判断密码是否正确
            if (next.equals("123456")){
                System.out.println("密码输入正确!");
                IfTest.queryPrizeByScore();
                break;
            }else{
                System.out.println("密码输入错误!");
            }
        }
    }
    /*
    * 需求 键盘录入学生的成绩,根据成绩所在的区间,打印不同的奖励
    * 95~100:自行车一辆
    * 90~94:游乐园玩一次
    * 80~89:变形金刚一个
    * 80以下:挨揍
    * */
    public static void queryPrizeByScore(){
        for (;;) {
            Scanner sc = new Scanner(System.in);
            int i = sc.nextInt();
            if (i >= 95 && i <= 100) {
                System.out.println("奖励自行车一辆");
                break;
            } else if (i >= 90 && i <= 94) {
                System.out.println("奖励游乐园玩一次");
                break;
            } else if (i >= 80 && i <= 89) {
                System.out.println("奖励变形金刚一个");
                break;
            } else if (i >= 0 && i < 80) {
                System.out.println("奖励挨揍");
                break;
            } else {
                System.out.println("您输入的分数有误");
            }
        }
    }
}

注意事项:

if语句中,如果大括号控制的是一条语句,大括号可以省略不写

if语句的()和{}之间不要写分号

switch语句

格式

switch(表达式:将要匹配的值){

case 值1:

        语句体1;

        break;

case 值2:

        语句体2;

        break;

...

default:

        语句体n+1

        break;

}

执行流程

1、拿着()中将要匹配的值,跟case给的选项,逐个进行匹配

        匹配成功,执行对应的语句体,再break结束掉整个switch语句。

2、如果给出的所以case都匹配失败了,将会执行最后的default,由break结束掉整个的switch语句

示例
import java.util.Scanner;

public class SwitchDemo {
    public static void main(String[] args) {
        SwitchDemo.switchTest();
    }
    /*
    * 需求键盘录入一个整数,根据录入的数值,程序打印对应的星期
    * */
    public static void switchTest(){
        System.out.println("请输入:");
        Scanner sc = new Scanner(System.in);
        int i = sc.nextInt();
        switch (i){
            case 1:
                System.out.println("星期一");
                break;
            case 2:
                System.out.println("星期二");
                break;
            case 3:
                System.out.println("星期三");
                break;
            case 4:
                System.out.println("星期四");
                break;
            case 5:
                System.out.println("星期五");
                break;
            case 6:
                System.out.println("星期六");
                break;
            case 7:
                System.out.println("星期日");
                break;
            default:
                System.out.println("您的输入有误!");
                break;
        }
        switch (i){
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
                System.out.println("工作日");
                break;
            case 6:
            case 7:
                System.out.println("休息日");
                break;
            default:
                System.out.println("您的输入有误!");
                break;
        }
        switch (i){
            //JDK14版本开始,case后面允许编写多个数据,多个数据中间用逗号隔开
            case 1,2,3,4,5:
                System.out.println("工作日");
                break;
            case 6,7:
                System.out.println("休息日");
                break;
            default:
                System.out.println("您的输入有误!");
                break;
        }
        switch (i){
            //JDK14版本开始,case后面允许编写多个数据,多个数据中间用逗号隔开
            case 1,2,3,4,5 -> System.out.println("工作日");
            case 6,7 -> System.out.println("休息日");   
            default -> System.out.println("您的输入有误!");  
        }

    }
}

注意事项:

1、case后边的值不允许重复

2、case后边的值只能是字面量不能是变量

3、switch() 中可以接收的类型

        1).基本数据类型:byte short char int (包装类:Character Byte Short Integer)

        2).引用数据类型:JDK5版本之后可以是枚举 JDK7版本之后可以是String字符串、

4、case穿透现象

5、 JDK14版本开始,case后面允许编写多个数据,多个数据中间用逗号隔开

3、循环结构

循环介绍 :循环可以解决的问题 解决重复执行的事情

import java.util.Scanner;

public class ForDemo {
    public static void main(String[] args) {
        ForDemo.checkPassword();
    }
    //有三次密码输入机会
    public static void checkPassword(){
        for (int i = 1; i <= 3; i++){
            //准备Scanner键盘录入
            Scanner sc = new Scanner(System.in);
            //指挥键盘录入密码
            String next = sc.next();
            //判断密码是否正确
            if (next.equals("123456")){
                System.out.println("密码输入正确!");
                break;
            }else{
                System.out.println("密码输入错误!");
            }
        }
    }
}
for循环

格式:

for(初始化语句;条件判断语句;条件控制语句){

       循环体;

}

案例:

/*
 * for循环语句格式
 *   for(初始化语句;条件判断语句;条件控制语句){
 *       循环体;
 *   }
 *
 * 执行流程:
 *   1、执行初始化语句,在整个循环过程中,只执行一次
 *   2、执行判断条件,看其返回结果是true还是false
 *       false:循环结束
 *       true:执行第三步
 *   3、执行循环体语句
 *   4、执行条件控制语句
 *   5、回到2继续。。。 直到循环结束
 * */
public class ForDemo {
    public static void main(String[] args) {
        print01();
        System.out.println("-------------------");
        print02(3);
        print02(1);
    }

    /*
        需求:在控制台打印10遍 "CSDN"
    */
    public static void print01() {
        for (int i = 0; i < 10; i++) {
            System.out.println("CSDN");
        }
    }

    /*
       需求:在控制台打印n遍 "CSDN"
   */
    public static void print02(int n) {
        if (n < 1) {
            System.out.println("您传入的参数有误,请检查");
        } else {


            for (int i = 0; i < n; i++) {
                System.out.println("CSDN");
            }
        }
    }
}
模拟计时器:
package com.ahui.myfor;

public class ForDemo {
    public static void main(String[] args) {
        printNumber();
    }
    /*
        需求:使用循环模拟计时器
            在控制台打印数字 1~3  循环中控制循环的那个变量,可以在循环体中,继续使用
            在控制台打印数字 3~1
    */
    public static void printNumber(){
        for (int i = 1; i <=3 ; i++){
            System.out.println(i);
        }
        System.out.println("----------");
        for (int i = 3; i >=1 ; i--){
            System.out.println(i);
        }
    }
}
求和:
public class ForTest {
    public static void main(String[] args) {
        System.out.println("请输入一个数得到0到这个数直接的偶数");
        Scanner scan = new Scanner(System.in);
        int i = scan.nextInt();
        int nums = sum(i);
        System.out.println("0到"+i+"之间的偶数和是:"+nums);
    }
    public static int sum(int n) {
        int temp = 0;
        for(int i = 0; i <= n; i++){
            if (i%2 == 0){
                temp+=i;
            }
        }
        return temp;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值