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

如何在函数中读取多字符串输入?以SEND指令格式为例

嘿,我懂你的痛点——当你把精力都放在核心的最短路径计算上时,这种输入拆分的小问题反而容易卡壳。别担心,我给你整理了几种常用编程语言的实现方法,轻松提取出那两个名字:

Python 实现

Python里处理这种空格分隔的输入超省心,直接用split()方法就能搞定,它会自动把输入按任意空白符拆分(哪怕有多个空格也不影响):

# 获取用户输入
user_input = input("请输入指令(格式:SEND name1 name2):")
# 拆分输入为字符串列表
parts = user_input.split()

# 先做个格式验证,避免输入错误导致崩溃
if len(parts) != 3 or parts[0] != "SEND":
    print("输入格式不对哦,请按照 SEND name1 name2 的格式来~")
else:
    name1, name2 = parts[1], parts[2]
    # 把名字传给你的最短路径计算函数
    shortest_distance = calculate_shortest_path(name1, name2)
    print(f"{name1} 和 {name2} 之间的最短路径距离是:{shortest_distance}")

小提示:split()默认会忽略开头、结尾的空格,还能处理多个连续空格,非常适合这种固定格式的输入。

Java 实现

Java里有两种常用的方式,按需选就行:

方法一:用 Scanner 逐个读取

Scanner的next()方法会自动按空白符拆分输入,每次调用取一个“令牌”,很适合这种固定顺序的输入:

import java.util.Scanner;

public class PathCalculator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入指令(格式:SEND name1 name2):");
        
        // 先读指令头
        String command = scanner.next();
        if (!"SEND".equals(command)) {
            System.out.println("输入格式错误,必须以 SEND 开头哦");
            scanner.close();
            return;
        }
        
        // 读取两个名字
        String name1 = scanner.next();
        String name2 = scanner.next();
        scanner.close();
        
        // 调用计算函数
        int distance = calculateShortestPath(name1, name2);
        System.out.println(name1 + " 和 " + name2 + " 之间的最短路径距离是:" + distance);
    }

    // 这里替换成你的核心计算逻辑
    private static int calculateShortestPath(String name1, String name2) {
        return 0;
    }
}

方法二:用 split() 拆分整行

如果想先读取整行输入再拆分,用split("\\s+")可以匹配任意数量的空白符(空格、制表符都算):

import java.util.Scanner;

public class PathCalculator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入指令(格式:SEND name1 name2):");
        String userInput = scanner.nextLine();
        scanner.close();
        
        // 按空白符拆分输入
        String[] parts = userInput.split("\\s+");
        if (parts.length != 3 || !"SEND".equals(parts[0])) {
            System.out.println("输入格式不对,请按照 SEND name1 name2 的格式输入");
            return;
        }
        
        String name1 = parts[1];
        String name2 = parts[2];
        int distance = calculateShortestPath(name1, name2);
        System.out.println(name1 + " 和 " + name2 + " 之间的最短路径距离是:" + distance);
    }

    private static int calculateShortestPath(String name1, String name2) {
        return 0;
    }
}
C++ 实现

C++里用cin就能轻松处理,它默认也是按空白符分隔输入的:

#include <iostream>
#include <string>
using namespace std;

// 替换成你的最短路径计算逻辑
int calculateShortestPath(string name1, string name2) {
    return 0;
}

int main() {
    string command, name1, name2;
    cout << "请输入指令(格式:SEND name1 name2):";
    cin >> command >> name1 >> name2;
    
    if (command != "SEND") {
        cout << "输入格式错误,必须以 SEND 开头哦" << endl;
        return 1;
    }
    
    int distance = calculateShortestPath(name1, name2);
    cout << name1 << " 和 " << name2 << " 之间的最短路径距离是:" << distance << endl;
    return 0;
}

核心思路总结

不管用哪种语言,核心都是按空白符分割输入字符串,然后提取对应位置的元素。记得加上格式验证逻辑哦,这样能避免用户输入错误导致程序崩溃,让你的代码更健壮。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:10:05