嵌套分支练习:根据淡旺季的月份和年龄,打印票价
import java.util.Scanner;
public class mn1{
public static void main(String[] arge){
/*
应用案例
出票系统:根据淡旺季的月份和年龄,打印票价
4—10旺季:
成人(18-60):60
儿童(<18):半价
老人(>60):1/3
淡季:
成人:40
其他:20
*/
//思路分析
//(1)淡旺季-if-else (2)在旺季中,可以使用多分支处理三种情况
//(3)在淡季情况,使用双分支处理即可
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入月份");
int month = myScanner.nextInt();
System.out.println("请输入年龄");
int age = myScanner.nextInt();
if(month >= 1 && month <= 12){
if(month >= 4 && month <= 10){
if(age > 60){
System.out.println("旺季老年人票价20元");
}else if (age >= 18 && age <= 60){
System.out.println("旺季成人票价60元");
}else if (age < 18 && age > 0){
System.out.println("旺季儿童票价30元");
}else{
System.out.println("年龄输入有误");
}
}else if (month >= 1 && month <=3 && month >= 10 && month <= 12){
if(age >= 18 && age <= 60){
System.out.println("淡季成人40元");
}else if ((age >= 1 && age <18) || age > 60 ){
System.out.println("淡季其他40元");
}else{
System.out.println("年龄输入有误");
}
}else{
System.out.println("月份输入有误");
}
}
}
}
旺季运行没问题,但是在输入淡季月份时候一直提示月份错误
请输入月份
2
请输入年龄
55
月份输入有误
层级结构问题
发现了吗?你的月份有误的判断是被包在 if(month >= 1 && month <= 12) 的代码块里面的
旺季部分没有问题,但是淡季部分一直提示 月份输入错误,有大佬讲解一下吗
下面那个判断条件有问题,不能都是与,中间应该有个或
既然旺季这里已经写了 也写了大条件 1-12
问题出在第34行 else if (month >= 1 && month <=3 && month >= 10 && month <= 12)
&&与关系要全部条件都为true时才会判断为true,这里2月份不满足month >= 10条件,所以判断为false
语句跳到下面语句
else{
System.out.println("月份输入有误");