嵌套分支练习,程序有误

嵌套分支练习:根据淡旺季的月份和年龄,打印票价

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
月份输入有误

层级结构问题

img

发现了吗?你的月份有误的判断是被包在 if(month >= 1 && month <= 12) 的代码块里面的

旺季部分没有问题,但是淡季部分一直提示 月份输入错误,有大佬讲解一下吗

下面那个判断条件有问题,不能都是与,中间应该有个或

既然旺季这里已经写了 也写了大条件 1-12

img


那么给这个if加一个else不就是淡季了吗 一年12个月 除了旺季就是淡季
至于报错 给这个if加个else 打印月份不合法就行了

img


学到后面可以主动出抛出异常来处理输入不合法

问题出在第34行 else if (month >= 1 && month <=3 && month >= 10 && month <= 12)
&&与关系要全部条件都为true时才会判断为true,这里2月份不满足month >= 10条件,所以判断为false
语句跳到下面语句
else{
System.out.println("月份输入有误");