You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java通过重载方法与switch接收用户输入实现电影场次查询的问题

代码问题修复

你现有的代码存在两个需要先修正的逻辑问题:

  • switch分支未加break关键字,会发生分支穿透,无论匹配到哪一个case,最终都会执行到最后一个分支或default的逻辑
  • 两个重载的movieTime方法没有使用传入的参数,而是直接读取类的成员变量,不符合「传入查询条件返回对应场次」的设计逻辑

修复后的MovieTicket类代码

public class MovieTicket
{
    private String actorName;
    private int startTime;

    public void setActorName(String actorName)
    {
        this.actorName = actorName;
    }

    public void setStartTime(int startTime)
    {
        this.startTime = startTime;
    }

    public String getActorName()
    {
        return actorName;
    }

    public int getStartTime()
    {
        return startTime;
    }

    // 按主演查询场次的重载方法
    public String movieTime(String actor)
    {
        String runDate;
        switch (actor)
        {
            case "Jack Black":
                runDate = "0800";
                break;
            case "Jon Bon":
                runDate = "1100";
                break;
            case "Jan Ban":
                runDate = "1300";
                break;
            case "Jim Bim":
                runDate = "1600";
                break;
            default:
                runDate = "请输入以下主演之一查询:Jack Black、Jon Bon、Jan Ban、Jim Bim";
        }
        return runDate;
    }

    // 按起始时间查询场次的重载方法
    public int movieTime(int startTime)
    {
        int runDate;
        switch (startTime)
        {
            case 600:
                runDate= 1000;
                break;
            case 900:
                runDate = 1200;
                break;
            case 1400:
                runDate = 1700;
                break;
            case 1800:
                runDate = 2000;
                break;
            default:
                runDate = -1; // 自定义非法输入返回值,-1代表无对应场次
        }
        return runDate;
    }
}

重载方法调用方式

Java的重载方法会根据调用时传入的参数类型自动匹配对应逻辑:传入字符串类型参数就会调用按主演查询的方法,传入整数类型参数就会调用按时间查询的方法。

完整测试类代码

import java.util.Scanner;

public class MovieTicketTestHarness
{
    public static void main (String[] args)
    {
        MovieTicket mt1 = new MovieTicket();
        Scanner userInput = new Scanner(System.in);

        // 选择查询方式
        System.out.println("请选择查询方式:1-按主演查询 2-按起始时间查询");
        int queryType = userInput.nextInt();
        userInput.nextLine(); // 清理输入缓冲区的换行符

        if (queryType == 1) {
            System.out.println("请输入主演姓名:");
            String actorInput = userInput.nextLine();
            String sessionResult = mt1.movieTime(actorInput);
            System.out.println("查询结果:" + sessionResult);
        } else if (queryType == 2) {
            System.out.println("请输入24小时制起始时间(整数,例如下午2点输入1400):");
            int timeInput = userInput.nextInt();
            int sessionResult = mt1.movieTime(timeInput);
            if (sessionResult == -1) {
                System.out.println("暂无对应场次,请输入600/900/1400/1800查询");
            } else {
                System.out.println("查询结果:对应放映场次为" + sessionResult);
            }
        } else {
            System.out.println("输入的查询方式无效");
        }
        userInput.close();
    }
}

内容的提问来源于stack exchange,提问作者Dragamaroon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 06:54:05