目录
需求
* 机票价格按照淡季旺季,头等舱和经济舱收费。输入机票原价,月份和头等舱或经济舱。 * 按照如下规则计算机票价格:旺季(5~10月)头等舱九折,经济舱8.5折,其他时间算淡季 * 头等舱七折,经济舱6.5折
代码
package day1002;
import java.util.Scanner;
public class maiFeiJiPiao {
public static void main(String[] args) {
/*卖飞机票
* 机票价格按照淡季旺季,头等舱和经济舱收费。输入机票原价,月份和头等舱或经济舱。
* 按照如下规则计算机票价格:旺季(5~10月)头等舱九折,经济舱8.5折,其他时间算淡季
* 头等舱七折,经济舱6.5折*/
Scanner sc=new Scanner(System.in);
System.out.println("请输入机票原价");
int jiPiaoYuanJia=sc.nextInt();
System.out.println("请输入月份");
int yueFen=sc.nextInt();
System.out.println("请输入是否为头等舱(用true和false表示)");
boolean shiTouDengCang=sc.nextBoolean();
double jiaGe = jiaGe(jiPiaoYuanJia, yueFen, shiTouDengCang);
System.out.print("机票的价格为:");
System.out.println(jiaGe);
}
public static double jiaGe(int jiPiaoYuanJia,int yuefen,boolean shiTouDengCang) {
double zuiZhongPiaoJia=0;
if(yuefen<=12&&yuefen>=1) {
if (yuefen <= 10 && yuefen >= 5) {
if (shiTouDengCang)
zuiZhongPiaoJia = 0.9 * jiPiaoYuanJia;
else
zuiZhongPiaoJia = 0.85 * jiPiaoYuanJia;
}
else {
if (shiTouDengCang)
zuiZhongPiaoJia = 0.7 * jiPiaoYuanJia;
else
zuiZhongPiaoJia = 0.65 * jiPiaoYuanJia;
}
}
else System.out.println("月份输入错误");
return zuiZhongPiaoJia;
}
}
运行结果
遇到问题
一开始写的方法如下
public static double jiaGe(int jiPiaoYuanJia,int yuefen,boolean shiTouDengCang) {
double zuiZhongPiaoJia;
if(yuefen<=12&&yuefen>=1) {
if (yuefen <= 10 && yuefen >= 5) {
if (shiTouDengCang)
zuiZhongPiaoJia = 0.9 * jiPiaoYuanJia;
else
zuiZhongPiaoJia = 0.85 * jiPiaoYuanJia;
}
else {
if (shiTouDengCang)
zuiZhongPiaoJia = 0.7 * jiPiaoYuanJia;
else
zuiZhongPiaoJia = 0.65 * jiPiaoYuanJia;
}
}
else System.out.println("月份输入错误");
return zuiZhongPiaoJia;
}
然后return报错Variable 'zuiZhongPiaoJia' might not have been initalized
一开始查询结果是这是个警告,意思是变量可能没有初始化,
然后我寻思着前面已经定义过“zuiZhongPiaoJia”这个变量了啊,而且警告就警告,只要不影响运行就等于没警告,然后就没管,运行时报错Error:(30, 16) java: 可能尚未初始化变量zuiZhongPiaoJia
说明还是影响运行的,虽然没太思考明白为啥影响运行了,这个变量后面有赋值啊。。。后来我想了一下,在以下这种情况时,如果不初始化确实会出现错误。
为了程序正常运行,修改了一下,定义 double zuiZhongPiaoJia=0; 然后就不报错了,可以正常运行了。
总结
报红就改吧,别想着可能是个警告,先看看用不用改了。。。