如何在函数中读取多字符串输入?以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
相关产品推荐
相关产品推荐

