ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java 流程控制 顺序 分支

2022-04-10 04:00:53  阅读:125  来源: 互联网

标签:语句 顺序 Java Scanner 流程 System println public out


Java 流程控制

在程序中,程序运行的流程控制决定程序是如何运行的。

主要是一下三大流程控制语句

  • 顺序控制
  • 分支控制
  • 循环控制

顺序控制

顺序控制:指程序从上到下顺序执行,中间没有任何判断与跳转。

以下例子就是顺序控制

public class ProcessControl {
    public static void main (String[] args) {
        int num1 = 123;
        int num2 = 456;
        int reslut = num1 + num2;
    }
}

从上到下每条语句依次执行:

  1. 定义num1变量并赋值 123
  2. 定义 num2变量并赋值 456
  3. 定义变量 result 并将 num1num2 的和赋给 result

这就是以上代码的执行顺序

分支控制

分支控制:让程序有选择的执行,分支控制分为三种

  • 单分支
  • 双分支
  • 多分支

单分支

基本语法:

/*
if (判断条件) {
    满足条件后需要执行的语句;
    可以有多条语句;
    但是每条语句结束后需要加上;  // ; 
}
*/

// 实际应用代码
public class ProcessControl {
    public static void main (String[] args) {
        // 这里作为控制开关
        boolean control = true;
       	
        // 如果 control 为 true 就执行 if 里面的语句,如果为 false 直接跳过改代码快执行后面的语句
        // 这里的 control 也可以换成其他条件表达式,如 2 > 3 等等,只要表达式最后的返回值是 boolean 类型就可以
        if (control) {
            System.out.println("执行了第一条语句");
            System.out.println("执行了第二条语句");
            System.out.println("执行了第三条语句");
            System.out.println("执行了第四条语句");
            System.out.println("执行了最后一句");
        }
        
        System.out.println("执行了外面的语句");
    }
}

运行上面代码,并尝试把 contorl 改为 false 看看和 true 的区别

// 如果满足条件后需要执行的语句只有一条也可以这样写
if (2 < 3) System.out.println("条件满足了");  // 虽然可以这样写但还是建议加上 {} 增强代码阅读性

实际应用:

/* 目标 让用户输入年龄
   然后判断年龄,
   如果小于 18 岁,打印 未成年人请在家长陪同下观看  然后再播放
   如果大于 18 岁,直接播放
*/

// 先导入扫描器 Scanner
import java.util.Scanner;

public class AgeJudge {
    public static void main (String[] args) {
        // 创建扫描器对象
        Scanner input = new Scanner(System.in);
        // 提示用户输入
        System.out.print("请输入你的年龄:");  // print 不换行  println换行
        // 创建变量接收用户输入的信息
        byte age = input.nextByte();
        
        // 判断年龄
        if (age < 18) {
            System.out.println("未成年人请在家长陪同下观看");
        }
        
        // 执行播放
        System.out.println("播放......");
    }
}

双分支

双方在就是在单分支的基础上,增加了一条对条件表达式为false时候的处理分支

基本语法:

if (条件表达式) {
    // 如果条件表达式为 true执行这个大括号里的代码
    需要执行的语句;
}
else {
    // 如果条件表达式为 false 执行这个大括号里的代码
    需要执行的语句;
}

实际应用:

/* 目标 让用户输入年龄
   然后判断年龄,
   如果小于 18 岁,打印你还年轻 再继续执行后面的程序
   如果大于 18 岁,打印你个糟老头子 再继续执行后面的程序
*/

// 先导入扫描器 Scanner
import java.util.Scanner;

public class AgeJudge {
    public static void main (String[] args) {
        // 创建扫描器对象
        Scanner input = new Scanner(System.in);
        // 提示用户输入
        System.out.print("请输入你的年龄:");  // print 不换行  println换行
        // 创建变量接收用户输入的信息
        byte age = input.nextByte();
        
        // 判断年龄
        if (age < 18) {
            System.out.println("你还年轻");
        }
        else {
            System.out.println("你个糟老头子");
        }
        // 继续执行后面的代码
        System.out.println("我是后面的代码");
    }
}

多分支

多分支就是在双分支的中间再插入一个判断条件

// 基本语法
if (条件表达式1) {满足该条件后要运行的代码;}  // 如果语句较短{}可以不换行 

else if (条件表达式2) {
    满足该条件后要运行的代码;  // 建议使用行尾风格
}

else 既不满足条件1,也不满足条件2 的时候要运行的代码;  // {} 可以省略,但不建议

实际应用:

/*
	目标:
	让用户输入年龄
	如果 低于 18 岁 输出 你还未成年 再运行后面的代码
	如果 等于 18 岁 输出 你已成年   在运行后面的代码
	如果 大于 18 岁 输出 你是该糟老头子 再运行后面的代码
*/

// 先导入扫描器 Scanner
import java.util.Scanner;

public class AgeJudge {
    public static void main (String[] args) {
        // 创建扫描器对象
        Scanner input = new Scanner(System.in);
        // 提示用户输入
        System.out.print("请输入你的年龄:");  // print 不换行  println换行
        // 创建变量接收用户输入的信息
        byte age = input.nextByte();
        
        // 判断年龄
        if (age < 18) {
            System.out.println("你还未成年");
        }
        else if (age == 18) {
            System.out.println("你已成年");
        }
        else {
            System.out.println("你是个糟老头子");
        }
        // 继续执行后面的代码
        System.out.println("我是后面的代码");
    }
}

注意:

分支控制

  1. 必须有 if (条件判断) {......}
  2. else if (判断条件) {......} 能拥有无数个
  3. 一个 if 代码块只能拥有0 或 1 个 else {......} 如果加了else 只能放该if 代码块的最后

综合应用

将前面学习到的内容综合应用起来

编写一个简单的收银台

需求:

苹果 价格5元/个

桃子 价格6元/个

梨 价格4元/个

西瓜 价格8元/个

总余额 100 元

求 先打印出总余额 即 商品价格列表

要求用户输入 商品编号

输入购买数量

自动扣除余额并打印购买信息

// 导入Scanner
import java.util.Scanner;

public class Checkout {
    public static void main (String[] args) {
        // 余额
        double balance = 100;
        // 商品价格
        int apple_price = 5;
        int peach_price = 6;
        int pear_price = 4;
        int watermelon_price = 8;
        // 先打印余额及价格信息
        System.out.println("欢迎光临,您的余额为:" + balance + "元");
        System.out.println("===================================");  // 分割线
        // 打印价格标头
        System.out.println("编号\t商品\t价格");
        // 打印商品价格
        System.out.println("1\t" + "苹果\t" + apple_price);
        System.out.println("2\t" + "桃\t" + peach_price);
        System.out.println("3\t" + "梨\t" + pear_price);
        System.out.println("4\t" + "西瓜\t" + watermelon_price);
        
        // 创建 Scanner 对象
        Scanner input = new Scanner(System.in);
        
        // 提示用户输入商品编号
        System.out.print("请输入您要购买的商品编号:");
        // 记录用户输入的商品编号
        int product_num = input.nextInt();
        
        // 先判断用户输入的商品编号是否存在
        if (product_num > 0 && product_num <= 4) { // 如果存在执行该代码块的代码
            
            // 提示用户输入购买数量
        	System.out.print("请输入您要购买的数量:");
        	// 记录用户购买数量
        	int buy_count = input.nextInt();
            
            // 用户选择苹果
            if (product_num == 1) {
                
                // 先计算总花费
                double total_cost = buy_count * apple_price;
                
                // 先判断余额是否足够支付,如果不够打印取消交易
                if (total_cost <= balance) {
                    System.out.println("您买苹果共花费了 " + total_cost + "余额还剩 " + 
                                       (balance - total_cost) + "元\n交易完成");
                }
                
                else System.out.println("余额不足,取消交易");
            }
            
            // 用户选择桃子
            else if (product_num == 2) {
                
                // 先计算总花费
                double total_cost = buy_count * peach_price;
                
                // 先判断余额是否足够支付,如果不够打印取消交易
                if (total_cost <= balance) {
                    System.out.println("您买桃子共花费了 " + total_cost + "余额还剩 " + 
                                       (balance - total_cost) + "元\n交易完成");
                }                
                else System.out.println("余额不足,取消交易");
            }
            
            // 用户选择梨
            else if (product_num == 3) {
                
                // 先计算总花费
                double total_cost = buy_count * pear_price;
                
                // 先判断余额是否足够支付,如果不够打印取消交易
                if (total_cost <= balance) {
                    System.out.println("您买梨共花费了 " + total_cost + "余额还剩 " + 
                                       (balance - total_cost) + "元\n交易完成");
                }                
                else System.out.println("余额不足,取消交易");
            }
            
            // 用户选择西瓜
            else if (product_num == 4) {
                
                // 先计算总花费
                double total_cost = buy_count * watermelon_price;
                // 先判断余额是否足够支付,如果不够打印取消交易
                
                if (total_cost <= balance) {
                    System.out.println("您买西瓜共花费了 " + total_cost + "余额还剩 " + 
                                       (balance - total_cost) + "元\n交易完成");
                }                
                else System.out.println("余额不足,取消交易");
            }
            
        }
        else{
            System.out.println("您输入的商品编号有误,请重新尝试");
        }
        
    }
}

以上案例用到了我们前面学习的 变量、转义字符、字符串拼接、Scanner、分支控制、分支嵌套、逻辑运算符、算术运算符,将我们目前学到的东西套用起来能得到这么一个简陋的收银台。

标签:语句,顺序,Java,Scanner,流程,System,println,public,out
来源: https://www.cnblogs.com/jwyqn/p/16124637.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有