今天给大家分享一个Java小项目--计算飞机票价。
题目要求:票价计算分为商务舱和经济舱,月份分两个阶段,一个为5-10月;一个为1-4,11-12月,商务舱在5-10月折扣为9折,经济舱为85折;商务舱在另外一个月份折扣为7折,经济舱为65折,请根据不同的情况,计算出票价。
import java.util.Scanner;
public class Demo33 {
public static void main(String[] args) {
//键盘录入
Scanner sc = new Scanner(System.in);
System.out.println("请输入机票原价");
int price = sc.nextInt();
System.out.println("请输入当前月份");
int month = sc.nextInt();
System.out.println("请输入你的舱位 0 为经济舱 1 为商务舱");
int seat = sc.nextInt();
首先,进行键盘录入,将题目所需的要求通过这个方式输入进去。
//通过多种if-elif语句体来进行判断和价格计算
if(month >= 5 && month<= 10){
if (seat == 0){
price = (int)(price * 0.9);
}else if(seat == 1){
//由于打了折扣之后数据类型会发生改变,但最终的结果是要整数类型
//这是需要运用强转
price = (int)(price * 0.85);
}else {
System.out.println("没有这个舱位");
}
}else if ((month >=1 && month <=4) || (month >= 11 && month <= 12)){
if (seat == 0){
price = (int)(price * 0.7);
}else if(seat == 1){
price = (int)(price * 0.65);
}else {
System.out.println("没有这个舱位");
}
}else{
System.out.println("没有这个月份");
}
System.out.println(price);
}
之后,便用if-elif语句体进行嵌套,根据不同的条件去进行计算,最后打印结果。
但运用if-elif语句体会使代码过于复杂,且代码过多,不利于后期维护,我们可以运用第二个方法,就是定义一个方法,并通过调用去实现。
import java.util.Scanner;
/*
需求:按照不同的月份,舱位,以及折扣进行计算
舱位有商务舱和经济舱,月份分为两个阶段:1-4或11-12和5-10
*/
public class Demo3 {
//按照提目要求去定义形参,注意一点,要始终牢记形参要与实参一一对应
//所以定义形参时要注意先后顺序
public static int getCount(int price ,int seat, double v0, double v1){
//这里的结果需要返回去运用,所以默认的void要改为int
//定义方法,定义四个所需的形参
//运用if-elif语句来判断舱位
if (seat == 0){
//由于打了折扣之后数据类型会发生改变,但最终的结果是要整数类型
//这是需要运用强转
price = (int)(price * v0);
}else if(seat == 1){
price = (int)(price * v1);
}else {
System.out.println("没有这个舱位");
}
//return关键字是返回结果
return price;
}
如图所示,定义方法,定义形参,但要注意的是你所定义形参的位置,后面你输入实参时,位置要一一对应。得到的结果是整数类型,所以要用到强转。
//同样运用if-elif语句体对月份进行判断
if(month >= 5 && month<= 10){
//这里计算价钱直接调用方法就好了,但要注意的是形参要与实参一一对应
price = getCount(price,seat,0.9,0.85);
}else if ((month >=1 && month <=4) || (month >= 11 && month <= 12)){
price = getCount(price,seat,0.7,0.65);
}else{
System.out.println("没有这个月份");
}
System.out.println(price);
}
之后,调用方法,按照题目所需带入折扣,并把结果赋值给price,打印既得答案。
第二种方法运用定义方法,调用方法的方式来实现,一方面降低了代码的冗余,另一方面也利于后期维护。如果有更好地方法,请各位小伙伴指教,仅供参考。