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

Java如何实现单次调用函数即可传入多个对象完成处理?

实现代码修改方案

你需要调整方法入参支持多对象传入,同时调整匹配逻辑为遍历所有传入的景点做校验,具体修改如下:

核心修改点

  • 修改attractionInfo方法入参为Attraction类型数组,支持一次传入所有景点数据
  • 复用同一个Scanner对象,避免重复创建输入流导致的读取异常,同时补充处理nextInt遗留的换行符问题,避免后续读取空值
  • 匹配逻辑改为遍历所有传入的景点,忽略大小写匹配名称,匹配成功则输出对应开放时间,全部遍历后无匹配再输出无信息提示
  • 调用attractionInfo时仅调用一次,把所有景点打包成数组传入即可

修改后完整代码

import java.util.Scanner;

class Attraction {
    String name;
    int open;
}

public class attractionGuide {
    public static void main(String[] args) {
        attractionDetails();
        System.exit(0);
    }

    public static Attraction createAttraction(String attractionName, int openingTime) {
        Attraction a = new Attraction();
        a.name = attractionName;
        a.open = openingTime;
        return a;
    }

    public static void attractionDetails() {
        Attraction TheEdenProject = createAttraction("The Eden Project", 9);
        Attraction LondonZoo = createAttraction("London Zoo", 10);
        Attraction TateModern = createAttraction("Tate Modern", 10);
        // 把所有景点放到数组中,一次传入
        Attraction[] allAttractions = {TheEdenProject, LondonZoo, TateModern};
        attractionInfo(allAttractions);
    }

    // 入参改为数组,接收所有景点
    public static void attractionInfo(Attraction[] attractions) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Welcome. How many attractions do you need to know about? ");
        final int howMany = scanner.nextInt();
        // 处理nextInt遗留的换行符,避免后续nextLine读取到空值
        scanner.nextLine();

        for (int i = 1; i <= howMany; i++) {
            System.out.print("\nName of attraction number " + i + "?: ");
            String attractionName = scanner.nextLine();
            boolean isFound = false;
            // 遍历所有景点匹配
            for (Attraction attr : attractions) {
                if (attractionName.equalsIgnoreCase(attr.name)) {
                    System.out.println(attr.name + " opens at " + attr.open + "am.");
                    isFound = true;
                    break;
                }
            }
            if (!isFound) {
                System.out.println("I have no information about that attraction.");
            }
        }
        scanner.close();
    }
}

修改后代码仅会触发一次查询数量询问,输入要查询的景点数量后,依次输入景点名称就会匹配所有已录入的景点信息,和期望的输出效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:15:03