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

如何用do-while循环实现城市信息查询程序的重复执行逻辑?

最优实现方案:循环结构+输入校验

嘿,这个需求其实非常典型,最优的实现思路就是用循环结构来处理重复查询的逻辑,而且因为你需要确保用户至少能完成一次城市查询(第一次操作是必须执行的),所以优先考虑「先执行一次,再判断是否重复」的循环模式——下面分思路和代码示例给你讲清楚:

核心实现思路

  • 封装核心逻辑:把「输入城市名称→获取并展示对应数据」的功能单独封装成函数/方法,这样代码结构更清晰,后续修改查询逻辑时也更方便维护。
  • 循环控制流程:用循环包裹核心查询逻辑,每次执行完查询后,询问用户是否继续;根据用户输入的Yes/No决定是重复循环还是终止程序。
  • 处理无效输入:对用户的选择输入做校验(比如不区分大小写、拦截非Yes/No的输入),避免因为误操作导致流程卡壳或出错。

代码示例(Python)

因为Python没有原生的do-while循环(先执行后判断的循环),我们可以用while True配合break来模拟,代码可读性很高:

def fetch_city_data(city_name):
    # 这里替换成你已经实现的城市数据查询逻辑,下面是模拟数据
    city_database = {
        "北京": {"人口": "2154万", "行政面积": "16410平方公里"},
        "上海": {"人口": "2428万", "行政面积": "6340平方公里"},
        "广州": {"人口": "1867万", "行政面积": "7434平方公里"}
    }
    return city_database.get(city_name, f"抱歉,未找到「{city_name}」的相关信息")

def main():
    while True:
        # 执行一次城市查询流程
        target_city = input("请输入要查询的城市名称:")
        result = fetch_city_data(target_city)
        print(result)
        
        # 询问用户是否继续,同时处理无效输入
        while True:
            user_choice = input("是否需要查询更多城市?(Yes/No):").strip().lower()
            if user_choice in ["yes", "no"]:
                break
            print("输入无效,请输入「Yes」或「No」哦")
        
        # 根据用户选择决定是否退出循环
        if user_choice == "no":
            print("程序已结束,感谢使用!")
            break

if __name__ == "__main__":
    main()

代码示例(Java,原生do-while)

如果是用支持do-while的语言(比如Java),可以更直接地实现「先执行后判断」的逻辑:

import java.util.Scanner;

public class CityInfoQuery {
    // 封装城市数据查询逻辑
    private static String getCityInfo(String cityName) {
        switch(cityName.trim()) {
            case "北京":
                return "北京:人口2154万,行政面积16410平方公里";
            case "上海":
                return "上海:人口2428万,行政面积6340平方公里";
            default:
                return "抱歉,未找到该城市的信息";
        }
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String userChoice;

        do {
            // 执行城市查询
            System.out.print("请输入要查询的城市名称:");
            String city = scanner.nextLine();
            System.out.println(getCityInfo(city));

            // 处理用户选择,校验输入有效性
            do {
                System.out.print("是否需要查询更多城市?(Yes/No):");
                userChoice = scanner.nextLine().trim().toLowerCase();
                if (!userChoice.equals("yes") && !userChoice.equals("no")) {
                    System.out.println("输入无效,请输入Yes或No");
                }
            } while (!userChoice.equals("yes") && !userChoice.equals("no"));

        } while (userChoice.equals("yes"));

        System.out.println("程序已终止");
        scanner.close();
    }
}

方案优势

  1. 逻辑清晰:核心查询逻辑和循环控制分离,代码可读性强,后期维护成本低;
  2. 用户友好:加入了无效输入校验,避免用户误操作导致流程异常;
  3. 通用性强:不管用哪种编程语言,这个思路都能适配,只是循环语法略有不同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:10:21