Java实例之实现淡旺季飞机票打折

某航空公司为吸引更多的顾客推出了优惠活动。原来的飞机票价为 3000 元,活动时,4~11 月旺季,头等舱 9 折,经济舱 8 折;1~3 月、12 月淡季,头等舱 5 折,经济舱 4 折,求机票的价格。

使用if-else语句实现淡旺季飞机票打折

下面使用 Java 的嵌套 if 语句根据淡旺季飞机票打折求出飞机票的价格,编写 Java 程序实现代码如下:
public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入出行的月份:");
        int month = sc.nextInt();
        System.out.println("选择头等舱还是经济舱?数字1为头等舱,数字2为经济舱");
        int kind = sc.nextInt();
        double result = 60000; // 原始价格
        // 旺季的票价计算
        if (month <= 11 && month >= 4) {
            if (kind == 1) { // 旺季头等舱
                result = result * 0.9;
            } else if (kind == 2) { // 旺季经济舱
                result = result * 0.8;
            } else {
                System.out.println("选择种类有误,请重新输入!");
            }
        }
        // 淡季的票价计算
        else if ((month >= 1 && month <= 3) || month == 12) {
            if (kind == 1) { // 淡季头等舱
                result = result * 0.5;
            } else if (kind == 2) { // 淡季经济舱
                result = result * 0.4;
            } else {
                System.out.println("选择种类有误,请重新输入!");
            }
        } else {
            System.out.println("日期选择有误,请重新输入!");
        }
        System.out.println("您选择的机票价格为:" + result);
    }
}
上面代码将用户输入的月份保存到 month 变量,将机票种类保存到 kind 变量。接下来判断变量 month 和 kind 的范围。如果变量 month 在 4~11,kind 为 1 则执行 result=result*0.9,为 2 则执行 result=result*0.8;变量 month 在 1~3、12,kind 为 1 则执行 result=result*0.5,为 2 则执行 result=result*0.4。当用户输入有误时,根据错误情况给予不同的提示。

旺季经济舱出行的输出结果如下所示:
请输入出行的月份:
6
选择头等舱还是经济舱?数字1为头等舱,数字2为经济舱
2
您选择的机票价格为:48000.0
淡季头等舱的输出结果如下所示:
请输入出行的月份:
2
选择头等舱还是经济舱?数字1为头等舱,数字2为经济舱
1
您选择的机票价格为:30000.0

使用switch语句实现淡旺季飞机票打折

上面是用嵌套 if 实现的淡旺季飞机票打折,下面我们用 switch 实现,代码如下所示:
public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入出行的月份:");
    int month = sc.nextInt();
    System.out.println("选择头等舱还是经济舱?数字1为头等舱,数字2为经济舱");
    int kind = sc.nextInt();
    double result = 60000; // 原始价格
    switch (month) {
    // 旺季的票价计算
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:
    case 11:
        switch (kind) {
        case 1: // 旺季头等舱
            result = result * 0.9;
            break;
        case 2:
            result = result * 0.8;
            break;
        default:
            System.out.println("选择种类有误,请重新输入!");
            break;
        }
        break;
    case 1:
    case 2:
    case 3:
    case 12:
        switch (kind) {
        case 1: // 旺季头等舱
            result = result * 0.5;
            break;
        case 2:
            result = result * 0.4;
            break;
        default:
            System.out.println("选择种类有误,请重新输入!");
            break;
        }
        break;
    default:
        System.out.println("日期选择有误,请重新输入!");
        break;
    }
    System.out.println("您选择的机票价格为:" + result);
}
运行结果如下所示:

请输入出行的月份:
6
选择头等舱还是经济舱?数字1为头等舱,数字2为经济舱
2
您选择的机票价格为:48000.0

淡季头等舱的输出结果如下所示:

请输入出行的月份:
2
选择头等舱还是经济舱?数字1为头等舱,数字2为经济舱
1
您选择的机票价格为:30000.0


推荐文章
Go语言goto语句——跳转到指定的标签

Go语言中goto语句通过标签进行代码间的无条件跳转,同时goto语句在快速跳出循环、避免重复退出上也有一定的帮助,使用goto语句能简化一些代码的实现过程。 使用goto退出多层循环 下面这段代码

c++中=和==的区别是什么?

c++中=和==的区别1、含义不同:“=”是赋值的意思。它的作用是将一个表达式的值赋给一个左值。一个表达式或者是一个左值,或者是一个右值。所谓左值是指一个能用于赋值运算左边的表达式。左值必须能够被修改

TensorFlow实现单层感知机详解

简单感知机是一个单层神经网络。它使用阈值激活函数,正如MarvinMinsky在论文中所证明的,它只能解决线性可分的问题。虽然这限制了单层感知机只能应用于线性可分问题,但它具有学习能力已经很好了。

MyBatis SqlSession简介

在MyBatis中,SqlSession是其核心接口。在MyBatis中有两个实现类,DefaultSqlSession和SqlSessionManager。 DefaultSqlSession是单

英语和数学不好能学好C语言吗

很多人都有这样一个疑问:“程序里面全是英文,可是我英语不好能学编程吗?” 当然能!能不能学好C语言跟英语关系不大。这一点英语专业的读者应该最有体会,他们所学的英语知识对学习C语言并不会有太大的帮助。

MySQL CROSS JOIN:交叉连接

前面所讲的查询语句都是针对一个表的,但是在关系型数据库中,表与表之间是有联系的,所以在实际应用中,经常使用多表查询。多表查询就是同时查询两个或两个以上的表。 在MySQL中,多表查询主要有交叉连接、

内存分段机制详解

通过学习内存分配的方式我们知道,用户的内存视图与实际的物理内存不一样。这同样适用于程序员的内存视图。 事实上,对操作系统和程序员来说,按物理性质来处理内存是不方便的。如果硬件可以提供内存机制,以便将

ai文件用什么软件打开和编辑?

AdobeIllustrator、CorelDRAW软件都可以打开和编辑AI格式的文件。1、鼠标右键点击AI文件,然后在打开方式中选择用AdobeIllustrator打开,如果装有AI软件,双击打开

解决Struts2下载中文文件乱码问题

通过《Struts2文件下载实例》的学习,读者已经学会了如何使用Struts2框架实现文件下载,但是细心的读者会发现,如果上传一个中文名称的文件(如文本文件.txt),再次下载此文件时,页面会报出50

C++ STL map容器详解

作为关联式容器的一种,map容器存储的都是pair对象,也就是用pair类模板创建的键值对。其中,各个键值对的键和值可以是任意数据类型,包括C++基本数据类型(int、double等)、使用结构体或类

bytefence是什么软件?

bytefence全称ByteFenceAntiMalware,是一款操作非常简单的系统扫描工具,一款杀毒软件。它的病毒库非常的强大,除了使用该软件扫描出病毒木马保护电脑的同时,还可以在这款软件中检测

Java访问控制修饰符详解(public、 private、protected 和 friendly)

在Java语言中提供了多个作用域修饰符,其中常用的有public、private、protected、final、abstract、static、transient和volatile,这些修饰符有类修

windows的任务栏可用于做什么?

在Windows系列系统中,任务栏(taskbar)就是指位于桌面最下方的小长条,主要由开始菜单(屏幕)、应用程序区、语言选项带(可解锁)和托盘区组成,而Windows7及其以后版本系统的任务栏右侧则

Linux用户和用户组(包含两者之间的关系)

Linux是多用户多任务操作系统,换句话说,Linux系统支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响。 例如,某台Linux服务器上有4个用户,分别是root、www、f

Python rjust()字符串右对齐方法详解

和ljust()方法类似,不同之处在于,rjust()方法是向字符串的左侧填充指定字符,从而达到右对齐文本的目的。 rjust()方法的基本格式如下: S.rjust(width[,fillcha

jQuery replaceWith()和replaceAll()方法

在jQuery中,如果想要替换元素,我们用replaceWith()方法和replaceAll()方法来实现。下面进行分别介绍。 jQueryreplaceWith()方法 在jQuery中,我们可

Linux GCC简明教程(使用GCC编写C语言程序)

市面上常见的Linux都是发行版本,典型的Linux发行版包含了Linux内核、桌面环境(例如GNOME、KDE、Unity等)和各种常用的必备工具(例如Shell、GCC、VIM、Firefox等)

c的ascii码值是多少?

c的ascii码值是多少?小写c的ASCII码值是99;大写C的ASCII码值是67。在ascii码中,65~90为26个大写英文字母(A~Z),97~122号为26个小写英文字母(a~z)。拓展知识

MyBatis TypeHandler类型转换器

在JDBC中,需要在PreparedStatement对象中设置那些已经预编译过的SQL语句的参数。执行SQL后,会通过ResultSet对象获取得到数据库的数据,而这些MyBatis是根据数据的类型

Hibernate的5种检索方式

Hibernate的检索方式主要有五种,包括导航对象图检索方式、OID检索方式、HQL检索方式、QBC检索方式和本地SQL检索方式,接下来针对Hibernate五种检索方式进行详细讲解。 导航对象图